Как объединить массив символов в строку - PullRequest
1 голос
/ 11 апреля 2019

Ниже у меня есть две переменные store в массиве char

char one[7]  = "130319";
char two[7] =  "05A501";

Я пытаюсь объединить их с помощью stringstream

std::ostringstream sz;
sz << one<< two;

После этого я конвертирую его в строку

std::string stringh = sz.str();

Затем я пытаюсь объединить его, чтобы сформировать путь к файлу. и написать текст в этом файле

std::string start="d:/testingwinnet/json/";
std::string end= ".json";
std::string concat= start+stringh + end;

ofstream myfile(concat);

myfile << "test";
myfile.close();

И я получаю следующую ошибку

error C2040: 'str' : 'class std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >' differs in levels
of indirection from 'char *

Любая идея. Большое спасибо

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019

Проблема в том, что вы используете очень старую версию Visual Studio.Гораздо старше, чем стандарт C ++ 11, в котором появилась возможность передавать std::string в качестве имен файлов в файловые потоки.

При открытии файлов необходимо использовать строку в стиле C (const char *) в качестве имени файла.например, std::ofstream.

Таким образом, решение с вашим текущим кодом должно сделать

ofstream myfile(concat.c_str());
0 голосов
/ 11 апреля 2019

Рассмотрите возможность проверки этого предыдущего ответа для объединения строк Как объединить две строки в C ++?

...