sách gpt4 ai đã đi

c++ - istream::operator>> 或 istream::get

In lại 作者:太空宇宙 更新时间:2023-11-04 16:05:00 26 4
mua khóa gpt4 Nike

我正在测试 C++PL 书中的一段代码并找到了下一段代码(我不想感觉我是在将它从书中复制粘贴到我的 IDE,所以我至少改变了变量名):

istream& operator>> (istream& is, MyContact& mc)
{
char ch1, ch2;
string ContactName{""};
if (is>>ch1 && is>>ch2 && ch1=='{' && ch2=='"')
{
while(is>>ch1 && ch1 != '"')
ContactName+=ch1;

if (is>>ch1 && ch1==',')
{
int ContactAge=0;
if (is>>ContactAge>>ch1 && ch1=='}')
{
mc={ContactName, ContactAge};
return is;
}
}
}

is.setstate(ios_base::failbit);
return is;
}

theo this link istream::get "从流中提取单个字符"

并根据this link istream::operator>> "从流中提取尽可能多的字符"

出于好奇,我更换了

if (is>>ch1 && is>>ch2 && ch1=='{' && ch2=='"')

if (is.get(ch1) && is.get(ch2) && ch1=='{' && ch2=='"')

它奏效了。没有编译错误,程序显然做了它应该做的,现在我的问题是:

为什么运算符是>>在我们提取单个字符的上下文中使用,当 is.get()功能一样吗?

1 Câu trả lời

operator >>lấy() 之间的主要区别在于前者跳过前导空格,而后者则不会。

关于c++ - istream::operator>> 或 istream::get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985418/

26 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com