c++ - C++ 中的 cin.get() 函数

标签 c++ c++11

我一直在学习 C++ 并遇到了下面的代码。我不明白为什么他们必须在“cin.get(straddress, sizeof(straddress), fdelim).get(c)”中使用 get(c)。没有这个 get(c),代码工作得很好。有人可以启发我使用 get(c) 吗?该程序的目的是读取混合类型的数据。

const char fdelim = '\t';
char straddress[256];
int zip;
char c;

cout << "Enter a record of data:  ";
cin.get(straddress, sizeof(straddress), fdelim).get(c) >> zip;
cout << "\nStreet address :   " << straddress << endl;
cout << "\nZip/Postal code:   " << zip << endl;

最佳答案

线

cin.get(straddress, sizeof(straddress), fdelim).get(c) >> zip;

fdelim之前的所有内容读取到straddress,然后将分隔符读取到c,然后将邮政编码读取到zip

它本来可以写得更好:

cin.get(straddress, sizeof(straddress), fdelim);
cin.get(c);
cin >> zip;

因为 c 没有被使用,它也可以被忽略。

cin.get(straddress, sizeof(straddress), fdelim);
cin.ignore(1); // Read and discard 1 character.
cin >> zip;

关于c++ - C++ 中的 cin.get() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581082/

相关文章:

c++ - 在 NVI 惯用语下,为什么虚函数不能公开?

C++ 数组和 make_unique

c++ - 使用可变模板中的参数定义多个方法

c++ - 无法使用 boost.sh 脚本制作的 Boost 框架来制作 cpp-netlib

c++ 自己实现信号量

c++ - gfortran makefile 问题

c++ - 两个瓦片之间的瓦片 map 冲突解决

c++ - “lambda capture”在常规功能上吗?

C++11 静态断言在使用 Clang++ 的 noexcept 检查失败?

c++11 - 复制但不移动