“\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”被认为是一个或两个字符,它可以存储在一个字符中吗?的主要内容,如果未能解决你的问题,请参考以下文章