28 December 2023

C++ 核心指南目录

“Use character-level input only when you have to”

理由

除非真的很需要处理单个字符,不然不要用字符级别的输入流。因为很容易出错,而且要从单个字符组成字符串串效率很低。

例子

char c;
char buf[128];
int i = 0;
while (cin.get(c) && !isspace(c) && i < 128)
    buf[i++] = c;
if (i == 128) {
    // ... handle too long string ....
}

更简单更安全的写法:

string s;
s.reserve(128);
cin >> s;

这里可能不需要用到 reserve(128)