這是我簡單的程序Const char ...改變了嗎?
string appData = getenv("APPDATA");
const char *mypath= (appData+"\\MyApplication\\hello.txt").c_str();
cout << mypath;
// output: c:\users\xrobot\appdata\Roaming\Myapplication\hello.txt
fstream file(mypath,ios::in);
ofstream filetemp;
filetemp.open("world.bak");
cout << mypath;
// output: É↕7
的一部分爲什麼mypath中在怪異的字符串改變了嗎?
我很驚訝,這段代碼編譯。你正在像一個std :: string對待一個cstring。 – SuperJames 2012-04-20 16:15:50
如果您在第4行中輸出「c:\ users \ xrobot \ appdata \ Roaming \ Myapplication \ hello.txt」,我不相信這裏的代碼段是您正在運行的實際代碼。相反,我期望第二行有編譯器錯誤。我們可以看到實際的代碼嗎?從您提供的症狀中,我懷疑在您的真實代碼中,您在std :: string上調用c_str()並保留返回的指針,同時保留std :: string聲明的範圍。不要這樣做,改爲std :: string。 – moonshadow 2012-04-20 16:17:42