“\n”被认为是一个或两个字符,它可以存储在一个字符中吗?

Posted

技术标签:

【中文标题】“\\n”被认为是一个或两个字符,它可以存储在一个字符中吗?【英文标题】:Is "\n" considered one or two characters, and can it be stored in a char?“\n”被认为是一个或两个字符,它可以存储在一个字符中吗? 【发布时间】:2014-04-27 03:07:15 【问题描述】:

我很确定 char 类型用于存储单个 ASCII 字符,除非添加任何前缀。所以考虑到这一点,我使用<iostream><string> 中包含的std::string 类型 每当我需要它。

如果我将 "\n" 存储在 std::string 中并打印它,它会被视为单个字符。这是否意味着我可以将字符串放入 char 中,即使它似乎由两个字符组成?

【问题讨论】:

"\n" 是一个字符。 char[] 表示一个字符串需要用“0”来标记字符串的结尾。为了做到这一点,char 数组需要多一个元素来存储“0”,但它不计为字符串大小。所以在这种情况下,char 数组大小为 2,字符串大小为 1。 【参考方案1】:

换行符是单个(通常为 8 位)字符。它在程序源中(以字符文字或字符串文字)由两个字符序列\n 表示。

所以'\n' 是一个字符常量,表示单个字符,即换行符。

另一方面(正如Paul Griffiths' answer 指出的那样),"\n"(使用双引号而不是单引号)是一个 字符串文字,它表示一个 字符串价值。该字符串由两个字符组成,一个'\n' 换行符和一个'\0' 空字符,用于标记字符串的结尾。

【讨论】:

所以因为它是一个表示为单个字符的它应该可以工作,我只是想确定一下。 :D @Keith 我认为你比我更能理解这个问题。【参考方案2】:

字符串 "\n" 是两个字符,'\n''\0' - 因为 C 风格的字符串以空字符结尾,在这种情况下是隐式的 - 所以不,你不能将它放入单个 char .您显然可以将 '\n' 存储在单个 char 中,但它仍将是单个 char,而不是字符串。

【讨论】:

OP 可能不清楚当你说"\n" 是两个字符时,你指的是换行符和隐式空终止符。 @KeithThompson:我认为在答案中将这两个字符拼写为“'\n''\0'”就很清楚了,您还建议添加什么? 宽字符串怎么样..不是存储为0x00, 0xA吗? @Brandon:它将存储在单个宽字符中,不是吗?

以上是关于“\n”被认为是一个或两个字符,它可以存储在一个字符中吗?的主要内容,如果未能解决你的问题,请参考以下文章

数据结构中计算字符串字串个数

R语言 字符串

芯学苑:浅析Java字节流和字符流

在 Python 中混淆字符串

输入带有两个句号的字符串

字向量和词向量区别