【问题标题】:How can print raw escape characters as \t and \n in cout?如何在 cout 中将原始转义字符打印为 \t 和 \n?
【发布时间】:2016-08-09 06:18:56
【问题描述】:

如何在不进行进一步处理的情况下打印转义字符,并将其打印为std::cout 中的\t\n 或...? 我不想在将文本发送到输出之前手动处理文本? 有没有为此目的切换到std::cout

【问题讨论】:

  • 转义字符只存在于源代码中——字符串本身包含转义字符所代表的实际字符。
  • 好的,源代码中存在转义字符,std::cout收到这个字符串已经包含转义序列了!
  • @molbdnilo 我认为关键是如何让输出流传输这些字符的“原始”表示。
  • @vahedmafi 您可以查找原始字符串文字。但是,无法更改 std::ostream 的模式以忽略大字符。
  • @vahedmafi 该字符串不包含转义序列。如果您想将空白字符打印为除空白以外的其他内容,您需要自己处理。

标签: c++ cout


【解决方案1】:

基本上,原始字符串文字是不处理 C++ 的转义字符(如 \n \t 或 \" )的字符串。原始字符串文字以 R"( 并以 )" 结尾,让我们看看在一个例子中,普通字符串和 C++ 中的原始字符串之间的区别:

string raw_str=R"(First line.\nSecond line.\nEnd of message.\n)";
cout<<raw_str<<endl;

结果:

~$ ./a.out
First line.\nSecond line.\nEnd of message.\n

【讨论】:

  • 如何在运行时生成原始字符串?
【解决方案2】:

如果您在此处添加一个额外的斜杠作为 \\t,您可以在 std::cout 的输出中看到 \t

例如:cout

希望对你有帮助

【讨论】:

  • 我不想在发送到 std::cout 之前手动处理文本。
猜你喜欢
  • 1970-01-01
  • 2011-10-04
  • 2020-12-19
  • 1970-01-01
  • 2016-04-11
  • 2020-11-23
  • 1970-01-01
  • 2022-01-05
相关资源
最近更新 更多