ifstream 只给我 16 个元素
ifstream gives me only 16 elements
我的问题是:
ifstream 只给我 16 个元素
您好,在我的 C++ 代码中有多个 类。他们是:
-数据(包括一些数字)
-Towns(包括至少 2 个 Data-objects(在向量中)和州名)
-县(管理城镇-对象)
程序应使用给定文件的数据填充 Town 对象。
代码如下所示:
COUNTRY.CPP:
Country::Country(string file) {
ifstream x(file);
Town t;
while (x.good()) {
x >> t;
this->towns.push_back(t);
}
}
要更深入 -> „>> t“看起来像这样:
TOWN.CPP:
istream& operator>>(std::istream& is, Town& d) {
is >> d.state>> d.town;
Data a, b;
a.SetYear(2011);
is >> a >> b;
// Some other code was here - but i think it's not relevant
return is;
}
要更深入 -> „>> a“看起来像这样:
DATA.CPP:
istream& operator>>(std::istream& is, Data& d) {
return is >> d.total >> d.male >> d.female;
}
如您所见 - 城镇在给定文件中。文件中的结构一遍又一遍地重复(总共:11292),看起来像这样:
来源(示例)
Baden-Württemberg
Kirchheim am Neckar
5225
2588
2637
5205
2608
2597
Baden-Württemberg
Kornwestheim
31053
15167
15886
31539
15502
16037
第一行:州
第二行:城镇
第 3-5 和第 6-8 行:数据
重复
太...出于某种原因,ifstream 只给了我 16 个元素(16 个城镇)。嗯....
使用移位运算符读取 std::string
只读取一个单词。默认情况下,单词由空格分隔。结果,字符串 Kirchheim am Neckar
不会被完全读取,而只会被读取 Kirchheim
。当尝试将 am
读取为整数时,流将进入故障模式并拒绝读取任何内容,直到其标志被 clear()
ed.
您可能想通过阅读整行来了解城镇和州。使用 std::getline(stream, str)
这样做。此外,始终 测试读取操作是否成功在 读取尝试之后。使用流的惯用方式是
while (x >> t) {
...
}
我的问题是:
ifstream 只给我 16 个元素
您好,在我的 C++ 代码中有多个 类。他们是:
-数据(包括一些数字)
-Towns(包括至少 2 个 Data-objects(在向量中)和州名)
-县(管理城镇-对象)
程序应使用给定文件的数据填充 Town 对象。
代码如下所示:
COUNTRY.CPP:
Country::Country(string file) {
ifstream x(file);
Town t;
while (x.good()) {
x >> t;
this->towns.push_back(t);
}
}
要更深入 -> „>> t“看起来像这样:
TOWN.CPP:
istream& operator>>(std::istream& is, Town& d) {
is >> d.state>> d.town;
Data a, b;
a.SetYear(2011);
is >> a >> b;
// Some other code was here - but i think it's not relevant
return is;
}
要更深入 -> „>> a“看起来像这样:
DATA.CPP:
istream& operator>>(std::istream& is, Data& d) {
return is >> d.total >> d.male >> d.female;
}
如您所见 - 城镇在给定文件中。文件中的结构一遍又一遍地重复(总共:11292),看起来像这样:
来源(示例)
Baden-Württemberg
Kirchheim am Neckar
5225
2588
2637
5205
2608
2597
Baden-Württemberg
Kornwestheim
31053
15167
15886
31539
15502
16037
第一行:州
第二行:城镇
第 3-5 和第 6-8 行:数据
重复
太...出于某种原因,ifstream 只给了我 16 个元素(16 个城镇)。嗯....
使用移位运算符读取 std::string
只读取一个单词。默认情况下,单词由空格分隔。结果,字符串 Kirchheim am Neckar
不会被完全读取,而只会被读取 Kirchheim
。当尝试将 am
读取为整数时,流将进入故障模式并拒绝读取任何内容,直到其标志被 clear()
ed.
您可能想通过阅读整行来了解城镇和州。使用 std::getline(stream, str)
这样做。此外,始终 测试读取操作是否成功在 读取尝试之后。使用流的惯用方式是
while (x >> t) {
...
}