为什么这会将'%'错误视为格式不正确的特殊字符。
ofstream batch;
batch.open("C:\tesfile.bat", ios::out);
batch << "@echo off\n";
batch << "set Dir=C:\Users\%USERNAME%\AppData\ \n";
另外我给c:\创建了bat文件,它在app文件夹(应用程序所在的位置)创建了bat文件。
请帮忙。
答案 0 :(得分:2)
您应该在字符串中转义特殊字符\
,或者使用C ++ 11原始文字(在我看来更好的选项!),如下所示:
batch.open(R"(C:\tesfile.bat)", ios::out);
答案 1 :(得分:1)
在字符串中,您需要将反斜杠(\
)转义为\\
。否则,编译器会认为您正在尝试插入\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!