一个字符串占用多少字节?一个字符?

新手上路,请多包涵

我正在复习我第一学期的 C++ 课,我想我遗漏了一些东西。一个字符串占用多少字节?一个字符?

我们给出的例子是,一些是字符文字,一些是字符串:

'n', "n", '\n', "\n", "\\n", ""

我对那里使用换行符感到特别困惑。

原文由 Moshe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答
#include <iostream>

int main()
{
    std::cout << sizeof 'n'   << std::endl;   // 1
    std::cout << sizeof "n"   << std::endl;   // 2
    std::cout << sizeof '\n'  << std::endl;   // 1
    std::cout << sizeof "\n"  << std::endl;   // 2
    std::cout << sizeof "\\n" << std::endl;   // 3
    std::cout << sizeof ""    << std::endl;   // 1
}

  • 单引号表示字符。
  • 双引号表示带有不可见的 NUL 终止符的 C 样式字符串。

\n (换行符)只有一个字符, \\ (反斜杠)也是如此。 \\n 只是一个反斜杠,后跟 n

原文由 fredoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

取决于是否使用 UTF8 一个 char 是 1byte 如果 UTF16 一个 char 是 2bytes 无关紧要 如果字节是 00000001 或 10000000 一个完整的字节被注册并为该字符保留一旦声明用于初始化并且如果 char 改变这个寄存器被更新新的价值。

一个字符串字节等于“”之间的字符数。

例子:11111111是一个填充字节,UTF8 char T = 01010100(1个字节)

UTF16 字符 T = 01010100 00000000(2 个字节)

UTF8 字符串“编码”= 011000110110111101100100011010010110111001100111(6 字节)

UTF16 字符串“编码”= 011000110000000001101111000000000110010000000000011010010000000001101110000000000110011100000000(12 字节)

UTF8 \n = 0101110001101110(2 字节)

UTF16 \n = 01011100000000000110111000000000(4 字节)

注意:您键入的每个空格和每个字符在编译器中占用 1-2 个字节,但空间如此之大,除非您在 90 年代初为计算机或游戏机键入 4mb 或更少的代码,否则您不必担心关于字符串或字符的字节。

对内存有问题的事情是调用需要使用浮点数、小数或双精度数进行大量计算的事情,并在循环或更新方法中使用数学随机数。最好在运行时或在固定时间更新上运行一次,并在整个时间跨度内取平均值。

原文由 Death Strike Gaming 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题