繁体   English   中英

在 C++ 中写入标准输出时 Escaping 换行符

[英]Escaping newline character when writing to stdout in C++

我的程序中有一个包含换行符的字符串:

char const *str = "Hello\nWorld";

通常在将这样的字符串打印到标准输出时,\n 会创建一个新行,因此 output 是:

Hello
World

但我想将字符串打印到标准输出并转义换行符,所以 output 看起来像:

Hello\nWorld

如何在不修改字符串文字的情况下做到这一点?

我选择的解决方案(感谢@RemyLebeau )是创建字符串的副本并转义所需的转义序列( "\n"变为"\\n" )。

这是执行此 escaping 的 function:

void escape_escape_sequences(std::string &str) {
  for (size_t i = 0; i < str.length();) {
    char const c = str[i];

    char rawEquiv = '\0';
    if (c == '\n') rawEquiv = 'n';
    else if (c == '\t') rawEquiv = 't';
    else if (c == '\r') rawEquiv = 'r';
    else if (c == '\f') rawEquiv = 'f';

    if (rawEquiv != '\0') {
      str[i] = rawEquiv;
      str.insert(i, "\\");
      i += 2;
    } else {
      ++i;
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM