c_str добавляет мусор в конце символа *

Я создаю FTP-сервер, и это сообщение отправляется от клиента на сервер, чтобы проверить, утвержден ли размер файла сервером.
Мне нужно использовать char * в функции write, поэтому я хочу преобразовать строку в char *. Структура строки имеет вид fileName # fileSize (test.txt # 37). Я попробовал c_str, но в итоге получил мусор.

Давайте посмотрим на следующий код:

string str(filenameDes);
str += HASHTAG;
str += to_string(fileSize);
cout << "str: " << str << endl;
char * pchar = str.c_str();
// sending file size to server
int retVal = write(socket, pchar, strlen(pchar));

Хотя, когда я хочу напечатать сообщение на сервере, используя cout, я получаю такой вывод:
test2 # 37 или что-то близкое к этому, означающее, что в итоге я получаю мусор.

Как мне убрать мусор? или любую другую команду для преобразования в char *?

-2

Решение

Проблема заключалась в том, что когда я получил сообщение с массивом char, я не инициализировал его с \ 0 во всех ячейках. Это решает случай, когда вы не знаете, какую длину сообщения вы получите. Большое спасибо PaulMcKenzie.

0

Другие решения


По вопросам рекламы [email protected]