我有一个文件,我想打印它的内容,但编译器无法识别以下内容: “/。\ ____ \ _ _ - 。” //“/ / __ - / __ \ _ \ _ \ \” “ \ / \ _ \。/ _ _ _ // //” “ // _ / \ _ _ \ _ - __ ” “ _ \ __ / - / \“ “ \ - 。\ \ / __ /。 “ “\ _ _ \ \ - 。\ _” “ - \ _ __ \ _ \`__ \ _ “ “./ ___ // / / // _ /”< / 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;
}
答案 0 :(得分:2)
您需要将\
的出现转义为\\
。如果你想要其中两个,你需要同时逃避 - \\\\
。
另请注意,第二行已注释掉:
//"/ /__ - \/\_______\\__\\__\ \"
怎么样:
"/ . \\ \\____ \\\\ \\\\ _ -. "
"/ /__ - \\/\\_______\\\\__\\\\__\\ \\"
"__\\ /\\ __ \\ . \\/_______//__//"
"__/\\/__/ \\ \\ \\_\\ \\ - ________ "
"___ ___ ______ \\ \\_____/ - /\\ "
"__ \\\\ -.\\ \\\\ ___\\ \\/_____/ ."
"\\ \\ \\__\\ \\\\ \\-. \\\\ __\\_ "
"- \\ _\\_______\\\\__\\ `\\___\\\\_____\\ "
". \\/_______//__/ /___//_____/ ";
答案 1 :(得分:1)
\
是文字字符串中的转义字符。如果要表示反斜杠,则需要对每次出现应用两次:
\ => \\
\\ => \\\\
文字字符串中的 "
个字符也需要转义\"
。
答案 2 :(得分:1)
编译器将\<any_symbol>
对视为control character,例如\n
是新行,\t
是制表。因此,每次使用反斜杠时,编译器都会尝试解释它,并将下一个符号作为控制字符。
要避免这种情况,您必须使用另一个反斜杠转义每个反斜杠,因此每次要使用\
时,都需要将其替换为\\
。当然,如果你想使用多个反斜杠,你将需要逃避它们中的每一个。
答案 3 :(得分:0)
据说“不承认”意味着“替换某些字符”或者说它是非法转义序列的内容:反斜杠\
是某些特殊字符的前缀。您既不需要将其作为\\
转义,也可以使用C ++ 2011将其转义为原始字符串。例如,"\\"
abd R"(\)"
都应生成一个反斜杠。