当我想在字符串中使用特殊字符时,我应该使用“\”:
std::string text("item \t new_item\n")
Run Code Online (Sandbox Code Playgroud)
但是,如果我打印这个字符串,显然它会打印:
item new_item
Run Code Online (Sandbox Code Playgroud)
有没有办法设置 std::cout 来打印所有特殊字符:
item \t new_item \n
Run Code Online (Sandbox Code Playgroud)
\t
并\n
分别打印一个制表符(4 个空格)和一个新行。
如果你想打印\t
并\n
作为输出。您必须在和\
之前添加额外的前缀。\t
\n
std::string text("item \\t new_item \\n")
Run Code Online (Sandbox Code Playgroud)
没有内置的方法可以做到这一点。您将需要手动转义字符。例如,在 C 语言中,它会是这样的:
for (const char* p = text; *p != '\0'; ++p)
{
int c = (unsigned char) *p;
switch (c)
{
case '\\':
printf("\\\\");
break;
case '\n':
printf("\\n");
break;
case '\r':
printf("\\r");
break;
case '\t':
printf("\\t");
break;
// TODO: Add other C character escapes here. See:
// <https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences>
default:
if (isprint(c))
{
putchar(c);
}
else
{
printf("\\x%X", c);
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
(请注意,我在问题仍然标记为 C 时写了上面的答案,并且我使用printf
它是因为我发现它比通过 C++ 的 iostream 格式化机制更简单(特别是出于演示目的)。)
归档时间: |
|
查看次数: |
18058 次 |
最近记录: |