2016-03-05 95 views
1

不同的变量数我有,看起来像一个文件:从文件中读取

1.23 2.34 4.4 6.5 3.4 
3.43 5.34 5.44 4.5 1.4 
.... and so on 

所以有很多行用空格分开。其实我读他们:

double values[5]; 
while (infile >> values[0] >> values[1] >> values[2] >> values[3] >> values4]) { 
    for (int j = 0; j < 5; j++) { 
     coordinates.at(x).values.push_back(values[j]); 
    } 
x++; 
} 

而且我希望能够改变的文件,例如从5到20值的数量是否有这样做的任何快捷方式?我发现的所有内容都是将整行读取为一个字符串,然后创建一个流并使用许多函数来获取此值。 我知道我的解决方案也是错误的,因为首先我将它们存储在表中,以便稍后将它们放入矢量中。

UPDATE:

回答这个问题是错误的,但我能跟它通过自己:

string line; 
while (getline(file, line)) { 
    stringstream ss(line); 

    double val; 
    while (ss >> val) { 
     //do something 
    } 
    x++; 
} 

回答

1
#include <iostream> 
#include <fstream> 
#include <sstream> 

int main() { 
    std::ifstream file("data"); 

    while (file) { 
     std::string line; 
     std::getline(file, line); 

     std::stringstream ss(line); 
     while (ss) { 
      double val; 
      if (ss >> val) { 
       // 
       // do whatever you want here 
       // 
      } 
     } 
    } 
} 
+0

其实它不工作:一个错误***“终止叫做抛出实例后'std :: out_of_range'“***,并且有两个警告: ***”局部变量未在循环中更新:文件,ss“*** – Mateusz

+0

我添加了一个if检查。虽然你明白了。而我没有得到你得到的错误消息:( – mustafagonul