数字常量之前的预期';'

expected ';' before numeric constant

本文关键字:常量 数字      更新时间:2023-10-16

我在C++有以下代码,试图将xml文件写入文件,但它一直给我这个问题"预期的';"在数字常量之前

int main () {
  ofstream myfile;
  myfile.open ("example.xml", ios::out| ios::app| ios::binary);
  if (myfile.is_open())
  {
    myfile << "<?xml version="1.0" encoding="UTF-8"?> n";
    myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> n";
    myfile << "<WUFI1D> n";

谁能帮忙?

您需要转义字符串内的引号,如下所示:

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";
myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> n";
myfile << "<WUFI1D> n";

编译器在看到第一个"时认为字符串已完成 - 因此您必须告诉它您的意思是通过将其转义"将其包含在字符串中。

有关C++字符转义码的完整列表,请参阅此处。

转义你的dbl引号:即

   myfile << "<?xml version="1.0" encoding="UTF-8"?> n";

应该是

   myfile << "<?xml version="1.0" encoding="UTF-8"?> n";

举个例子

嵌入的引号需要转义。

这:

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";
myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> n";

应如下所示:

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";
myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> n";

不能在字符串中使用原始引号,因为它们表示字符串的末尾。转义它们:

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";
myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> n";
myfile << "<WUFI1D> n";

您还可以在 C++11 中使用原始字符串文本,它将所有内容(包括空格)视为原始字符串的一部分:

myfile << 
R"(<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?>
<WUFI1D>
)";

如果字符串中有括号,请在它周围放置一个分隔符:R"###(st(ri)ng)###"

后者可能更适合较长的文件,这样您就不必转义所有内容,但请记住,所有换行符、空格等都包含在字符串中,并且语法突出显示可能会变得混乱,具体取决于编辑器是否考虑原始文字,以及缩进(如果每行开头不包含多余的空格很重要), 因为您必须将文字保留到每行的最开头。

您有未转义的双引号,如代码突出显示器所示。如果要在输出的文本中显示双引号,请使用"

您不会转义输出字符串中的引号,例如

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";

您必须使用不是字符串分隔符的反斜杠转义 (") 双引号:

myfile << "<?xml version="1.0" encoding="UTF-8"?> n";