2017-03-10 47 views
0

我有一個字符串是這樣的:輸出一個C++字符串包括所有的轉義字符

string s = "\t Hello \n"; 

當我打印出來,然後它給了我一個選項卡,然後喂那麼新線。不過,反正是有,我可以打印出來,這樣我看到這在我的控制檯:

\t Hello \n

換句話說,我希望字符串忽略轉義字符,並把它當作一個實際字符串?

+2

[在爲文字而不是轉義的字符串使用\]的可能的複製(http://stackoverflow.com/questions/12103445/using-in-一個串 - 如字面-代替-的-的逃逸) – Alexander

回答

1

您將需要轉義反斜線所以它會是這個樣子

string s = "\\t Hello \\n"; 
0

doublebackslash因爲\\ doublebackslash產生\單反斜線。

string s = "\\t Hello \\n"; 
0

換句話說,我希望字符串忽略轉義字符,並把它當作一個實際字符串?

如果字符串是硬編碼,爲你展示,你可以修改它的使用方法:

string s = "\\t Hello \\n"; 

如果你希望能夠處理在程序拋出的任何字符串,你有編寫一個函數並處理該語言允許的所有轉義序列。

std::ostream& writeString(std::ostream& out, std::string const& s) 
{ 
    for (auto ch : s) 
    { 
     switch (ch) 
     { 
     case '\'': 
      out << "\\'"; 
      break; 

     case '\"': 
      out << "\\\""; 
      break; 

     case '\?': 
      out << "\\?"; 
      break; 

     case '\\': 
      out << "\\\\"; 
      break; 

     case '\a': 
      out << "\\a"; 
      break; 

     case '\b': 
      out << "\\b"; 
      break; 

     case '\f': 
      out << "\\f"; 
      break; 

     case '\n': 
      out << "\\n"; 
      break; 

     case '\r': 
      out << "\\r"; 
      break; 

     case '\t': 
      out << "\\t"; 
      break; 

     case '\v': 
      out << "\\v"; 
      break; 

     default: 
      out << ch; 
     } 
    } 

    return out; 
} 

使用它作爲:

writeString(std::cout, s); 
相關問題