【问题标题】:expected ';' before numeric constant预期的 ';'在数字常量之前
【发布时间】:2012-10-17 00:50:06
【问题描述】:

我在 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";

谁能帮忙?

【问题讨论】:

  • 或者,如果你的编译器支持,你可以使用raw string literals
  • 请编辑您的问题并重述主题。删除标签c++(不应该在那里),你的问题变成了“编程”,这不是一个有效的问题。

标签: c++


【解决方案1】:

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

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

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

See here 获取 C++ 中字符转义码的完整列表。

【讨论】:

    【解决方案2】:

    转义你的 dbl 引号:即

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

    应该是

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

    举个例子

    【讨论】:

      【解决方案3】:

      嵌入的引号需要转义。

      这个:

      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";
      

      【讨论】:

        【解决方案4】:

        您不能在字符串中使用原始引号,因为它们表示字符串的结尾。转而逃避它们:

        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)###"

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            您没有转义输出字符串中的引号,例如

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-12-31
                • 2013-02-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-08-03
                相关资源
                最近更新 更多