string和string.c_str()的值不同

different values of string and string.c_str()

本文关键字:string str      更新时间:2023-10-16

我正在尝试使用c++通过网络发送文件。首先,我读取文件并将其缓冲为字符串然后将字符串转换为c_str()并通过套接字类

发送

我有一个问题,当我发送我的数据,它不能正确输出。我写了下面的代码来检查,我意识到我的string和string.c_str()的值彼此不同

ifstream source(path.c_str(), ios::binary);   
ostringstream out;
out << source.rdbuf();
string msg = out.str();
source.close();
cout << "msg: " << msg << endl;
printf("sent - %sn", message.c_str());

这两行的结果是不同的。"cout"打印文件的字符,但printf只打印3个字符

为什么会这样?

谢谢你的帮助

似乎字符串在第三个字符之后嵌入了零''。