输出包含所有转义字符的C ++字符串

时间:2017-03-10 05:52:31

标签: c++ cout

我有一个这样的字符串:

string s = "\t Hello \n";

当我打印它然后它给了我一个标签然后你好然后一个新线。但是,无论如何我可以打印它,以便在控制台中看到它:

\t Hello \n

换句话说,我希望字符串忽略转义字符并将其视为实际字符串?

3 个答案:

答案 0 :(得分:0)

你需要转义反斜杠,所以它看起来像这样

awk -F'=' '{print ($NF=="" ? "Error" : $NF)}' file

答案 1 :(得分:0)

使用 doublebackslash ,因为\\ doublebackslash会产生\单反斜杠。

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

答案 2 :(得分: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);