> first; 代码如下: std::wi-6ren">
gpt4 book ai didi

c++ - 从文件中读取不能按预期工作

转载 作者:行者123 更新时间:2023-11-30 05:18:41 24 4
gpt4 key购买 nike

我重载了运算符 >>> 并且我正在尝试从文件中读取数据,即

Store first;
std::wifstream in("file.txt");
in >> first;

代码如下:

std::wistream & operator >> (std::wistream &is, Store &store)
{
std::size_t vec_size; // size of employees_ vector
std::getline(is, store.name_);
is >> store.surface_area_;
std::wcout << store.surface_area_ << std::endl;
is >> vec_size;
std::wcout << vec_size << std::endl;
...
return is;
}

name_wstring

类型

surface_area_ 的类型是double

文件.txt:

Euro AGD
1154,5
0
0

(我设置了波兰语 $LANG,这就是为什么有逗号而不是点的原因)

我得到的是:

1 154,5
4 519 717 136

如果我在 getline 之后添加 is.ignore(),我会得到:

154,5
0

我的猜测是 getline 导致缓冲区困惑。如何实现?

最佳答案

好的,我想我已经找到了解决方案。整个问题是在一个文件中有 1154,5而不是 1 154,5 - 在这个小改动之后一切正常(没有任何 ignore() )。然而,有趣的是 11 541,5也可以正常工作,但是 111 541,5四舍五入为 111 542 (为什么yyyyy)。

另一个有趣的问题是,为什么要破解 << store.surface_area_以不同于 >> 的格式保存数字正在尝试阅读它。他们真的应该简化 C++ 中的编码,这会造成太多麻烦。编辑:不是,毕竟是我的错。

关于c++ - 从文件中读取不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528037/

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