-2

我正在构建一个 ftp 服务器,这是从客户端发送到服务器的消息,用于检查文件大小是否得到服务器的批准。我需要在函数 write 中使用 char*,所以我想将字符串转换为 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* 的命令?

4

1 回答 1

0

问题是,当我收到带有 char 数组的消息时,我没有在所有单元格中用 \0 初始化它。这解决了当您不知道要收到多长消息时的情况。非常感谢 PaulMcKenzie。

于 2015-06-06T11:45:29.517 回答