我遇到下面的代碼有問題。我正在經歷不同的行爲,具體取決於我使用的IDE。將const char *傳遞給file.open(),奇怪的行爲
Dev-C++:運行良好。但是,如果我通過GenerateFileName(0,0)
到file.open()
,則不會創建任何文件。
的Visual Studio 2013:奔跑在所有情況下都正常,但是,生成的文件名看起來像
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌPùD
或類似的東西,而文件本身沒有擴展名(我期待有一個.txt
文件)。
int main()
{
ofstream file;
file.open(GenerateFileName(3, 0));
file << 1 << endl;
file.close();
_getch();
}
const char* GenerateFileName(int Instance_nth, int Input_nth)
{
string filename = to_string(Instance_nth);
filename += "_";
filename += to_string(Input_nth);
filename += ".txt";
return filename.c_str();
}
在'GenerateFileName()'變量'filename'被銷燬該函數返回時,所以函數的返回值是垃圾。 – Leon
您正在返回一個指向局部變量的指針。這是UB。 –
只從函數返回字符串 – Borgleader