string和string.c_str()的不同值

时间:2014-05-24 12:51:44

标签: c++ string sockets network-programming

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

我遇到问题,当我发送数据时,它没有正确输出。我写了下面的代码来检查,我意识到我的字符串和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 - %s\n", message.c_str());

这两行的结果是不同的。 &#34; COUT&#34;打印我的文件的字符,但printf只打印3个字符

为什么会这样?

非常感谢你的帮助

1 个答案:

答案 0 :(得分:3)

似乎字符串在第三个字符后面包含嵌入的零'\ 0'。