我如何让编译器识别这些字符

时间:2012-09-24 11:21:36

标签: c++ file-io

我有一个文件,我想打印它的内容,但编译器无法识别以下内容: “/。\ ____ \ _ _ - 。”             //“/ / __ - / __ \ _ \ _ \ \”             “ \ / \ _ \。/ _ _ _ // //”             “ // _ / \ _ _ \ _ - __ ”             “ _ \ __ / - / \“             “ \ - 。\ \ / __ /。 “             “\ _ _ \ \ - 。\ _”             “ - \ _ __ \ _ \`__ \ _ “             “./ ___ // / / // _ /”< / p>

这是我的代码:

int main()
{
  MenuText text;
  string test = "Champion";
  ofstream output("File.txt");
  text.save(output);
  fstream output ("File.txt");
  text.load("File.txt");//This is an error.
  text.print();


MenuText::MenuText()
{
    mText = "Default";

}
MenuText :: MenuText(string text)
{
mText = text;
}
void MenuText::print()
{
cout<< "Story= " << mText<< endl;
cout<< endl;
}
void MenuText::save(ofstream& outFile)
{
outFile<<   "/         .   \  \____    \\   \\    _ -. "
            //"/    /__        -    \/\_______\\__\\__\ \"
            "__\  /\   __   \     .      \/_______//__//"
            "__/\/__/ \  \   \_\  \       -   ________  "
            "___    ___  ______  \  \_____/     -  /\    "
            "__    \\   -.\    \\   ___\ \/_____/    ."
            "\  \  \__\   \\   \-.      \\   __\_        "
            "-   \ _\_______\\__\  `\___\\_____\           "
            ".     \/_______//__/    /___//_____/ "<< mText<< endl;
cout<< endl;
outFile<< endl;
}
void MenuText::load(ifstream& inFile)
{
string garbage;
inFile>> garbage >> mText;
}

4 个答案:

答案 0 :(得分:2)

您需要将\的出现转义为\\。如果你想要其中两个,你需要同时逃避 - \\\\

另请注意,第二行已注释掉:

//"/    /__        -    \/\_______\\__\\__\ \"

怎么样:

        "/         .   \\  \\____    \\\\   \\\\    _ -. "
        "/    /__        -    \\/\\_______\\\\__\\\\__\\ \\"
        "__\\  /\\   __   \\     .      \\/_______//__//"
        "__/\\/__/ \\  \\   \\_\\  \\       -   ________  "
        "___    ___  ______  \\  \\_____/     -  /\\    "
        "__    \\\\   -.\\    \\\\   ___\\ \\/_____/    ."
        "\\  \\  \\__\\   \\\\   \\-.      \\\\   __\\_        "
        "-   \\ _\\_______\\\\__\\  `\\___\\\\_____\\           "
        ".     \\/_______//__/    /___//_____/ ";

答案 1 :(得分:1)

\是文字字符串中的转义字符。如果要表示反斜杠,则需要对每次出现应用两次:

\ => \\
\\ => \\\\
文字字符串中的

"个字符也需要转义\"

答案 2 :(得分:1)

编译器将\<any_symbol>对视为control character,例如\n是新行,\t是制表。因此,每次使用反斜杠时,编译器都会尝试解释它,并将下一个符号作为控制字符。

要避免这种情况,您必须使用另一个反斜杠转义每个反斜杠,因此每次要使用\时,都需要将其替换为\\。当然,如果你想使用多个反斜杠,你将需要逃避它们中的每一个。

答案 3 :(得分:0)

据说“不承认”意味着“替换某些字符”或者说它是非法转义序列的内容:反斜杠\是某些特殊字符的前缀。您既不需要将其作为\\转义,也可以使用C ++ 2011将其转义为原始字符串。例如,"\\" abd R"(\)"都应生成一个反斜杠。