我的问题可以归结为,从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 (???)正确打印字符串?我正在Visual Studio 2008中进行编译。
3 回答
- 3 回答
- 0 关注
- 390 浏览
添加回答
举报
0/150
提交
取消