2

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

誰でも助けることができますか?

4

7 に答える 7

4

次のように、文字列内の引用符をエスケープする必要があります。

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

コンパイラは、最初の文字列を確認したときに文字列が終了したと見なし"ます。したがって、文字列をエスケープすることによって、文字列に文字列を含めることを意味することを伝える必要があります\"

C++ での文字のエスケープ コードの完全なリストについては、こちらを参照してください。

于 2012-10-17T00:52:07.617 に答える
2

dbl-quotes をエスケープします: すなわち

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

する必要があります

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

例として

于 2012-10-17T00:51:51.293 に答える
1

埋め込まれた引用符はエスケープする必要があります。

これ:

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";
于 2012-10-17T00:52:02.493 に答える
1

引用符は文字列の終わりを意味するため、文字列内で生の引用符を使用することはできません。代わりにそれらをエスケープします。

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

後者は、すべてをエスケープする必要がないように、より長いファイルに適している可能性がありますが、すべての改行、空白などが文字列に含まれていることに注意してください。生のリテラルと、各行の最初にリテラルを保持する必要があるため、各行の先頭に余分なスペースが含まれていないことが重要な場合はインデントを考慮してください。

于 2012-10-17T00:54:27.333 に答える
0

コードハイライターが示すように、エスケープされていない二重引用符があります。\"出力テキストに二重引用符を表示したい場合に使用します。

于 2012-10-17T00:51:55.200 に答える
0

出力文字列の引用符をエスケープしていません。

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n";
于 2012-10-17T00:51:59.997 に答える
0

文字列区切り文字ではないバックスラッシュを使用して、(") 二重引用符をエスケープする必要があります。

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n";
于 2012-10-17T00:52:04.713 に答える