为什么"\n"在stdin而不是代码中输入时显示不同?

dar*_*dow 1 c c++

假设我有一个字符数组char str[10].

如果我将值存储xyz\nabcstrusing char str[10]="xyz\nabc";并输出它,它会给出以下输出:

xyz
abc
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我从stdin表单中给它输入xyz\nabc然后打印它,它会给出以下输出:

 xyz\nabc
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Luc*_*ore 7

当你从中读取它时stdin,你会看到正好显示的字符串"xyz\nabc".

如果您在代码中硬编码该值(即char* x = "xyz\nabc"),则它\n是一个单个字符,它代表一个新行.要获得相同的输出,你需要char* x = "xyz\\nabc"- 额外的\逃避\.

请参阅http://en.cppreference.com/w/cpp/language/escape