我的问题可以归结为,从 stringstream.str().c_str()
返回的字符串在内存中的位置是什么,为什么不能将它分配给 const char*
?
这个代码示例将比我更好地解释它
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream ss("this is a string\n");
string str(ss.str());
const char* cstr1 = str.c_str();
const char* cstr2 = ss.str().c_str();
cout << cstr1 // Prints correctly
<< cstr2; // ERROR, prints out garbage
system("PAUSE");
return 0;
}
假设 stringstream.str().c_str()
可以分配给 const char*
导致了一个错误,我花了一段时间来追踪。
为了加分,有人能解释为什么把 cout
语句替换为
cout << cstr // Prints correctly
<< ss.str().c_str() // Prints correctly
<< cstr2; // Prints correctly (???)
正确打印字符串?
我正在 VisualStudio2008中编译。