Определение
Копирует знаки данного экземпляра в массив знаков Юникода. Copies the characters in this instance to a Unicode character array.
Перегрузки
Копирует знаки из указанной подстроки данного экземпляра в массив знаков Юникода. Copies the characters in a specified substring in this instance to a Unicode character array.
Копирует знаки данного экземпляра в массив знаков Юникода. Copies the characters in this instance to a Unicode character array.
ToCharArray(Int32, Int32)
Копирует знаки из указанной подстроки данного экземпляра в массив знаков Юникода. Copies the characters in a specified substring in this instance to a Unicode character array.
Параметры
Начальная позиция подстроки в данном экземпляре. The starting position of a substring in this instance.
Длина подстроки в данном экземпляре. The length of the substring in this instance.
Возвраты
Массив знаков Юникода, элементами которого являются length знаков данного экземпляра начиная с позиции startIndex . A Unicode character array whose elements are the length number of characters in this instance starting from character position startIndex .
Исключения
Значение параметра startIndex или length меньше нуля. startIndex or length is less than zero.
— или — -or- startIndex + length больше длины этого экземпляра. startIndex plus length is greater than the length of this instance.
Примеры
В следующем примере подстрока в строке преобразуется в массив символов, затем перечисляется и отображаются элементы массива. The following example converts a substring within a string to an array of characters, then enumerates and displays the elements of the array.
Комментарии
Этот метод копирует символы из части строки в массив символов. This method copies the characters in a portion of a string to a character array. Чтобы создать строку из диапазона символов в массиве символов, вызовите конструктор String(Char[], Int32, Int32). To create a string from a range of characters in a character array, call the String(Char[], Int32, Int32) constructor.
Параметр startIndex отсчитывается от нуля. The startIndex parameter is zero-based. То есть индекс первого символа в экземпляре строки равен нулю. That is, the index of the first character in the string instance is zero.
Если length равно нулю, возвращаемый массив пуст и имеет нулевую длину. If length is zero, the returned array is empty and has a zero length. Если этот экземпляр имеет null или пустую строку («»), возвращаемый массив пуст и имеет нулевую длину. If this instance is null or an empty string («»), the returned array is empty and has a zero length.
Чтобы создать массив байтов, содержащий закодированные символы в части строки, создайте экземпляр соответствующего объекта Encoding и вызовите его метод GetBytes(String, Int32, Int32, Byte[], Int32). To create a byte array that contains the encoded characters in a portion of a string, instantiate the appropriate Encoding object and call its GetBytes(String, Int32, Int32, Byte[], Int32) method. Ниже перечислены некоторые из стандартных кодировок, доступных в .NET. Some of the standard encodings available in .NET include:
| кодировка Encoding | Object Object |
|---|---|
| ASCII ASCII | ASCIIEncoding |
| UTF-7 UTF-7 | UTF7Encoding |
| UTF-8 UTF-8 | UTF8Encoding |
| UTF-16 UTF-16 | UnicodeEncoding |
| UTF-32 UTF-32 | UTF32Encoding |
Дополнительно
ToCharArray()
Копирует знаки данного экземпляра в массив знаков Юникода. Copies the characters in this instance to a Unicode character array.
Возвраты
Массив знаков Юникода, элементами которого являются отдельные знаки из данного экземпляра. A Unicode character array whose elements are the individual characters of this instance. Если этот экземпляр является пустой строкой, то возвращаемый массив пуст и его длина равна нулю. If this instance is an empty string, the returned array is empty and has a zero length.
Примеры
В следующем примере вызывается метод ToCharArray для извлечения символов из строки в массив символов. The following example calls the ToCharArray method to extract the characters in a string to a character array. Затем она отображает исходную строку и элементы в массиве. It then displays the original string and the elements in the array.
В следующем примере определяется строка, содержащая символы, которые служат разделителями в строке с разделителями. The following example defines a string containing the characters that serve as delimiters in a delimited string. Затем он вызывает метод ToCharArray, чтобы создать массив символов, который можно передать в метод Split(Char[]), чтобы разделить строку с разделителями на отдельные подстроки. It then calls the ToCharArray method to create a character array that can be passed to the Split(Char[]) method to separate the delimited string into its individual substrings.
Комментарии
Этот метод копирует каждый символ (то есть каждый объект Char) в строке в массив символов. This method copies each character (that is, each Char object) in a string to a character array. Первый скопированный символ находится в нулевом индексе возвращенного массива символов; последний скопированный символ находится в индексе Array.Length-1. The first character copied is at index zero of the returned character array; the last character copied is at index Array.Length — 1.
Чтобы создать строку из символов в массиве символов, вызовите конструктор String(Char[]). To create a string from the characters in a character array, call the String(Char[]) constructor.
Я хотел бы, чтобы преобразовать string to char массив, а не char* . Я знаю, как преобразовать строку char* (через malloc или то, как я разместил его в своем коде) — но это не то, что я хочу. Я просто хочу конвертировать string to char[size] массив. Возможно ли это?
10 ответов:
самый простой способ, который я могу придумать, это:
для безопасности, вы предпочтете:
или может быть таким образом:
хорошо, я в шоке, что никто не дал хороший ответ, теперь моя очередь. Есть два случая;
A константы char массив достаточно хорош для вас так что вы идете с,
или нужно изменить массив символов so constant не в порядке, тогда просто идите с этим
оба всего операций присваивания и большую часть времени это просто что вам нужно, если вам действительно нужна новая копия, тогда следуйте ответам других товарищей.
Я видел много похожих вопросов, но ни один из них, похоже, не работает для моего кода, я думаю, что пропускаю что-то простое, может быть, вы можете помочь.
Прямо сейчас я создаю строку для отправки в качестве запроса к функции отправки winsock, которая требует отправки char []. Мне нужно преобразовать мой std :: string в массив char (char []).
В настоящее время это запрос, который работает:
Но мне нужно изменить строку запроса на ту же структуру данных.
Я ценю любую помощь!
редактировать:
Я могу преобразовать строку в символ *, но как я могу использовать это, чтобы получить
массив символов? Я надеюсь, что я не делаю это более запутанным. Вот
две попытки, которые приводят к тому, что char star не совместимы с send
запрос, когда я бегу:
Решение
Если у вас есть какой-то устаревший API в стиле C с такой подписью, где он ожидает строку в стиле C с нулевым символом в конце:
тогда вы можете сделать что-то вроде:
Если вам действительно нужен массив или неконстантная версия данных, то API это:
Тогда вы можете сделать что-то вроде этого:
Другие решения
Вы действительно нуждаетесь char[] или будет char const* делать?
Если последнее, c_str () будет делать то, что вы хотите.
Если первое, то вам нужно скопировать строку в то, что делает то, что вы хотите:
Скорее всего, вам нужна только версия c_str. Если вам нужна эта вторая версия, тогда вы читаете и, возможно, надеетесь предоставить максимальный размер баффа.