C++中向stdout输出时转义换行字符且不修改字符串字面量的方法
解决方案
要在不修改原字符串字面量的前提下,将字符串中的换行符转义为\n输出,核心思路是遍历字符串的每个字符,对换行符'\n'做转义处理后输出,其余字符直接输出。
具体实现代码
#include <stdio.h> // 自定义转义输出函数 void print_with_escaped_newlines(const char *str) { while (*str != '\0') { if (*str == '\n') { // 输出转义后的\n,注意反斜杠需要用\\转义 fputs("\\n", stdout); } else { // 普通字符直接输出 fputc(*str, stdout); } str++; } // 最后添加一个换行符,匹配目标输出格式 fputc('\n', stdout); } int main() { const char *str = "Hello\nWorld"; print_with_escaped_newlines(str); return 0; }
代码说明
- 遍历逻辑:通过
while (*str != '\0')循环遍历字符串,直到遇到字符串结束符'\0'。 - 转义处理:当检测到字符是
'\n'时,使用fputs("\\n", stdout)输出转义序列——C语言中要输出单个反斜杠,必须用两个反斜杠\\来转义。 - 普通字符:非换行符的字符直接用
fputc输出到标准输出。
运行这段代码后,输出结果为:
Hello\nWorld
内容的提问来源于stack exchange,提问作者nluka
相关产品推荐
相关产品推荐

