gpt4 book ai didi

c++ - 提取运算符 (>>) 可以覆盖变量吗?

转载 作者:太空狗 更新时间:2023-10-29 23:33:34 25 4
gpt4 key购买 nike

我写了如下测试代码:

int main(int argc, char* argv[]) {
stringstream ss;
int num;

ss << "54321";
ss >> num;
ss.str("");
ss << "12345";
ss >> num;

fprintf(stderr, "%d\n", num);
}

令我惊讶的是,结果是 54321。如何使用提取运算符 (>>) 正确覆盖变量?

最佳答案

第一次提取后,您到达了流的末尾,因此设置了 eofbit,第二次提取失败。

int main(int argc, char* argv[]) {
stringstream ss;
int num;

ss << "54321";
ss >> num;

// eofbit was set above,
// we need to clear it
ss.clear();

ss.str("");
ss << "12345";
ss >> num;

fprintf(stderr, "%d\n", num);
}

调用clear()尝试第二次提取之前的成员函数。 第二个问题是内部get指针的位置,不会自动重置。使用 seekg()进行设置。

编辑:被击中的东西不是必需的,解释为here .

关于c++ - 提取运算符 (>>) 可以覆盖变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12918585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com