stringstream,string和char *转换混乱

我的问题可以归结为,从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中进行编译。



慕运维8079593
浏览 391回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP