C++中'\n'或"\n"有什么区别?

Zud*_*Zud 10 c++ newline

我已经看到新线路\n在我一直在研究的一些代码示例中使用了两种不同的方式.第一个是'\n'第二个,第二个是"\n".有什么区别,为什么要使用'\n'

我理解'\n'代表一个字符并"\n"代表一个字符串,但这有关系吗?

mik*_*obi 25

'\n'是一个字符常量.

"\n"是一个指向等于{'\n', '\0'}(\n加上空终止符)的字符数组的指针

编辑

我意识到我解释了差异,但没有回答这个问题.

您使用哪一个取决于上下文.您可以使用'\n',如果你拨打的期望字符的功能,并且"\n",如果它需要一个字符串.


Ste*_*sop 8

'\n'是一个字面意思."\n"是一个字符串文字(基本上是一个字符数组).

如果您将其写入普通流,则差异无关紧要.std::cout << "\n";具有相同的效果std::cout << '\n';.

在几乎所有其他背景下,差异都很重要.char通常不与字符数组或字符串互换.

所以例如std::string有一个构造函数,它接受一个const char*,但它没有一个构造函数,它采取一个char.你可以写std::string("\n");,但std::string('\n');不编译.

std::string还有一个构造函数,它需要char和复制它的次数.它没有一个需要a const char*和复制它的次数.因此,您可以编写std::string(5,'\n')并获取一行中包含5个换行符的字符串.你不能写std::string(5, "\n");.

您使用的任何函数或操作都将告诉您它是为char定义的,对于C样式的字符串,是通过重载还是两者都没有定义.