2012-09-24 37 views
0

我有一個文件,我想打印甌它的內容,但編譯器無法識別以下內容:「/\ ____ \ \ _ - 」 // 「//__ -/__ \ _ \ _ \ \」 「\/\ _ \/_ _ _ // // 」 「 // _ /\ _ \ - __ 「 「 _ \ __ /-/\」 「 \ - \ \ \/__ /。」 「\ \ _ \ \ - \ _」 。 「 - \ _ __ \ _ \`__ \_ \」 」/ ___ // // // _ /「我將如何讓編譯器能夠識別這些字符

這裏是我的代碼:

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; 
} 
+2

文本中的所有文字(單個)反斜槓'\'必須寫爲'\\'。 –

回答

2

您需要將\的出現轉義爲\\。如果你想要兩個你需要逃脫 - \\\\

還要注意的是,第二行註釋掉:

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

什麼:

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

是的,由於某種原因,第二行有一個關於錯過了一個關閉報價的錯誤:S – Pendo826

+0

輸出只是作爲。 ......但是,這擺脫了錯誤。 – Pendo826

+0

另外:當你的數據看起來像這樣,*不要把它作爲字符串文字*放在源文件中,如果你可以幫忙的話。沒有辦法讓有人看這個源文件來判斷它是否是你想要的,或者是否有某些額外的反斜槓在某處出現。更好的做法是從不是亂碼的小部分中構建字符串,或者在文本文件中定義亂碼而不轉義,並將該文本文件作爲構建的一部分處理(作爲資源或編寫腳本來完成字符串逃避你)。 –

1

\是在一個字符串轉義字符。如果你想表示一個反斜槓,你需要兩次運用它每次出現:一個字符串內

\ => \\ 
\\ => \\\\ 

"人物也需要進行轉義\"

1

編譯器將任何\<any_symbol>對視爲control character,例如\n是新行,並且\t是製表。因此,每次使用反斜槓時,編譯器都會嘗試解釋它,並將下一個符號作爲控制字符。

爲了避免這種情況,必須逃脫與另一個反斜槓反斜槓每一個,所以要使用\每一次,你將需要\\來取代它。當然,如果你想使用多個反斜槓,你需要逃避每一個反斜槓。

0

假設「無法識別」是指沿着「替換某些字符」的行,或者對非法轉義序列提出異議:反斜槓\是某些特殊字符的前綴。您既不需要將其轉義爲\\,也可以使用C++ 2011使用原始字符串。例如,"\\" abd R"(\)"應該都產生一個反斜槓。

相關問題