错误不完整的通用字符名称\ U.

时间:2010-11-03 04:43:25

标签: c++ text-files

我正在尝试编写一个改变.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;
}

我做错了什么?

6 个答案:

答案 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中,并且如果在文本中预期该文本在例如配置文件中)。怪异。