c ++将Chars写入批处理文件

时间:2016-02-11 22:15:43

标签: c++

为什么这会将'%'错误视为格式不正确的特殊字符。

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文件。

请帮忙。

2 个答案:

答案 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!