zip; 不能,c++,c++11,C++,C++11" /> zip; 不能,c++,c++11,C++,C++11" />

C++; 我一直在学习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; const char fdelim='\t'; 字符集[256]; int-zip; 字符c; cout>zip; 不能

C++; 我一直在学习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; const char fdelim='\t'; 字符集[256]; int-zip; 字符c; cout>zip; 不能,c++,c++11,C++,C++11,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, s

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;
线路

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;

假设用户在键入
\t
字符之前键入的字符少于255个,则当到达
\t
字符时,对的第一次调用将停止读取,但不会从
cin
中提取该字符。下一次调用
cin.get()
将提取
\t

我会选择使用,它读取分隔符,但不将其存储在调用方的缓冲区中:

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

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

假设用户在键入
\t
字符之前键入的字符少于255个,则当到达
\t
字符时,对的第一次调用将停止读取,但不会从
cin
中提取该字符。下一次调用
cin.get()
将提取
\t

我会选择使用,它读取分隔符,但不将其存储在调用方的缓冲区中:

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

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

它只是从输入流中获取下一个字符,并将其放入
c
。看起来它只是试图跳过地址的制表符分隔符。但这不是必需的,因为
>zip
将跳过空白。这只是从输入流中获取下一个字符并将其放入
c
。看起来它只是试图跳过地址的制表符分隔符。但这不是必需的,因为
>zip
将跳过空白。我想他们是在
fdelim
更改为非空白字符的情况下编写的。我想他们是在
fdelim
更改为非空白字符的情况下编写的。谢谢您的输入。我刚才看到你的照片了。这给了我更深入的见解。我非常感谢。谢谢你的投入。我刚才看到你的照片了。这给了我更深入的见解。我非常感激。