これは私の簡単なプログラムConst char ... changed? mypathでその奇妙な文字列に変更されたのはなぜ
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
の部分ですか?
このコードがコンパイルされるのに驚いています。あなたはstd :: stringのようにcstringを扱っています。 – SuperJames
4行目に "c:\ users \ xrobot \ appdata \ Roaming \ Myapplication \ hello.txt"という出力が表示された場合は、実行している実際のコードがここにあるとは思いません。むしろ、私は2行目にコンパイラエラーがあると思います。実際のコードを見ることはできますか?あなたが与えた症状から、私はあなたの本当のコードでは、std :: stringでc_str()を呼び出し、std :: stringが宣言されたスコープから離れる間に返されたポインタを保持していると考えています。代わりにstd :: stringに変換します。 – moonshadow