每次我做一小段C++代码行
std::string s;
cin >> s;我咒骂自己,因为我忘记了它只停留在空格,而不是整行。
然后,一想起getline,我总是对这两种变体感到困惑:
std::string s;
getline (std::cin, s);和:
char cs[256];
std::cin.getline (cs, sizeof (cs));除了数据类型之外,这两种类型之间是否真的有区别?
在我看来,C++的方式应该是前者。假设我可能应该使用实际字符串而不是以null结尾的字符数组,那么在什么情况下我应该使用后者?
而且,既然输入实际上应该是输入流的权限,为什么istream的前一部分不是
发布于 2011-02-02 17:08:23
是的,现代的C++方法是使用自由函数并输入std::string。
但是IOStream有比std::string更长的历史(标准版本至少是相同设计的第三个版本),而这段历史解释了为什么事情是这样的。
( getline成员的优点是它不意味着动态分配;该特性有时可能很方便,但可能不足以在从头开始的设计中证明它的合理性)。
https://stackoverflow.com/questions/4872361
复制相似问题