我知道有很多关于如何迭代ifstreams的答案,但是没有它们确实帮助我找到了解决方案。
我的问题是: 我有一个包含多行数据的txt文件。 txt文件的第一行告诉我其余的数据是如何组成的。 例如,这是我的txt文件:
5 5 5
0.5 0.5 0.5
0 0 0
0 0 1
0 0 -1
0.5 1 0
0 0 -1 0
0 0 1 1
0 -1 0 1
1 0 0 3
0 1 0 1
...
所以这应该告诉我的程序
double a,b,c
inf >> a >> b >> c
前5行
double a,b,c,d
inf >> a >> b >> c >> d
接下来的5行 等
我想我可以通过使用getLine()
然后将结果字符串拆分为每个“”来做到这一点,但我想知道是否有任何“更清洁”的方法。
答案 0 :(得分:0)
为什么不循环?
new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|");
答案 1 :(得分:0)
是在while循环中使用getline并使用istringstream和istream_iterator解析数据并将单个数据保存在vector中。
int main()
{
std::ifstream infile(<absolute path to file>);
std::string input="0 0 -1 0";
std::vector<std::vector<float>> data;
while( getline(infile,input))
{
std::istringstream iss(input);
std::vector<float> input_data{istream_iterator<float>{iss},
istream_iterator<float>{}};
data.push_back(input_data);
}
for( const auto & x: input_data)
std::cout<<x<<" ";
}