Конвертировать C ++ string
в массив char довольно просто, используя c_str
функцию string и затем делая это strcpy
. Однако как сделать наоборот?
У меня есть массив символов , как: char arr[ ] = "This is a test";
быть преобразован обратно в:
string str = "This is a test
.
const char*
, так что вы можете передать ему строковый литерал или массив символов (который затухает)."hello world"
являются массивами. Если вы используетеsizeof("hello world")
его, вы получите размер массива (который равен 12), а не размер указателя (вероятно, 4 или 8).string
Конструктор не будет работать, например, переданная строка аргумент объявлен какunsigned char * buffer
, что - то очень часто при обработке потока байтов библиотеки.std::string str(buffer, buffer+size);
но в этом случае, вероятно, лучше придерживатьсяstd::vector<unsigned char>
.str
здесь нет функции преобразования. Это имя строковой переменной. Вы можете использовать любое другое имя переменной (напримерstring foo(arr);
). Преобразование выполняется конструктором std :: string, который вызывается неявно.Другое решение может выглядеть так,
который избегает использования дополнительной переменной.
источник
cout << "test:" + std::string(arr);
string aString(someChar);
?В самых популярных ответах пропущена небольшая проблема. А именно, массив символов может содержать 0. Если мы будем использовать конструктор с одним параметром, как указано выше, мы потеряем некоторые данные. Возможное решение:
Выход:
источник
std::string
в качестве контейнера для двоичных данных и не можете быть уверены, что массив не содержит '\ 0'.ВНЕ:
источник