我有一個字符串是這樣的:輸出一個C++字符串包括所有的轉義字符
string s = "\t Hello \n";
當我打印出來,然後它給了我一個選項卡,然後喂那麼新線。不過,反正是有,我可以打印出來,這樣我看到這在我的控制檯:
\t Hello \n
換句話說,我希望字符串忽略轉義字符,並把它當作一個實際字符串?
我有一個字符串是這樣的:輸出一個C++字符串包括所有的轉義字符
string s = "\t Hello \n";
當我打印出來,然後它給了我一個選項卡,然後喂那麼新線。不過,反正是有,我可以打印出來,這樣我看到這在我的控制檯:
\t Hello \n
換句話說,我希望字符串忽略轉義字符,並把它當作一個實際字符串?
您將需要轉義反斜線所以它會是這個樣子
string s = "\\t Hello \\n";
將doublebackslash因爲\\
doublebackslash產生\
單反斜線。
string s = "\\t Hello \\n";
換句話說,我希望字符串忽略轉義字符,並把它當作一個實際字符串?
如果字符串是硬編碼,爲你展示,你可以修改它的使用方法:
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);
[在爲文字而不是轉義的字符串使用\]的可能的複製(http://stackoverflow.com/questions/12103445/using-in-一個串 - 如字面-代替-的-的逃逸) – Alexander