我正在尝试编写一个改变.txt文件的C ++程序。但是,当我运行它时,我得到一个奇怪的错误。
错误:
6:20 C:\ Dev-Cpp \ Homework6.cpp不完整的通用字符名称\ U
我的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream myfile ("C:\Users\My Name\Desktop\test\input.txt");
if (myfile.is_open())
{
myfile << "This is a line.\n";
myfile << "This is another line.\n";
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
我做错了什么?
答案 0 :(得分:21)
"C:\Users\My Name\Desktop\test\input.txt"
反斜杠(\
)是一个特殊字符。你必须逃避它:
"C:\\Users\\My Name\\Desktop\\test\\input.txt"
。
编辑:或者,使用正斜杠(/
)。 Windows并不关心。
答案 1 :(得分:6)
您需要在文件名中转义反斜杠。在C ++字符串常量中,反斜杠是一个不代表自身的转义字符。要获得文字反斜杠,您需要使用双反斜杠\\
。
\U
是32位Unicode转义序列的前缀:您使用“\U0010FFFF
”之类的东西来表示高Unicode字符。编译器抱怨\Users...
不是有效的Unicode转义序列,因为sers...
不是有效的十六进制数。
修复方法是使用字符串"C:\\Users\\My Name\\Desktop\\test\\input.txt"
。
答案 2 :(得分:3)
你需要在那里使用双反斜杠。所以"C:\\Users...
。否则,您将启动一个转义序列(在本例中为\ U表示unicode文字)。
答案 3 :(得分:2)
您需要在文件名中使用额外的\
来转义\
。 (即你需要使用\\
)
答案 4 :(得分:2)
确切情况但\U
与\u
的含义不同。 iOS接受\u
并向\U
答案 5 :(得分:0)
即使文本位于C / C ++源代码的 comments 中,即使在Visual Studio 2015中也会发生此错误。 Visual Studio不够智能,无法在注释中忽略此文本,即使该命令告诉了一些有用的内容(例如在单词domain \ user中,并且如果在文本中预期该文本在例如配置文件中)。怪异。