爲什麼在'%'處出現錯誤爲錯誤的格式化特殊字符。C++將字符寫入批處理文件
ofstream batch;
batch.open("C:\tesfile.bat", ios::out);
batch << "@echo off\n";
batch << "set Dir=C:\Users\%USERNAME%\AppData\ \n";
另外我給C:\創建它在該應用文件夾(其中該應用被放置)創建bat文件bat文件。
請幫忙。
爲什麼在'%'處出現錯誤爲錯誤的格式化特殊字符。C++將字符寫入批處理文件
ofstream batch;
batch.open("C:\tesfile.bat", ios::out);
batch << "@echo off\n";
batch << "set Dir=C:\Users\%USERNAME%\AppData\ \n";
另外我給C:\創建它在該應用文件夾(其中該應用被放置)創建bat文件bat文件。
請幫忙。
在一個字符串中,你需要將你的反斜槓(\
)作爲\\
。否則,編譯器會認爲你只是試圖插入特殊字符,如\n
:
batch.open("C:\\tesfile.bat", ios::out);
batch << "@echo off\n";
batch << "set Dir=C:\\Users\\%USERNAME%\\AppData\\ \n";
這樣一想鍛鍊,想象一下,如果你沒有逃脫你的反斜線會發生什麼:
batch.open("C:\nifty_folder", ios::out); //\n in "nifty" causes a newline!
事實上,您的原始代碼有意想不到的後果!
batch.open("C:\tesfile.bat", ios::out); //\t is a tab!
你要麼逃避特殊字符\
在你的字符串,或使用C++ 11個的原始文字是這樣的(更好的選擇,我的看法!):
batch.open(R"(C:\tesfile.bat)", ios::out);
@RPGillespie,發現和固定:)但謝謝你指出這一點。 – SergeyA