C ++文件输入从下一行开始

时间:2014-10-11 14:53:31

标签: c++ arrays file input output

我必须编写一个程序来读取这样的文件:
7
5 6 4 2 1 3 8

第一行表示有多少人,第二行表示每个人的身高。我设法读取第一行并存储在一个变量中,但我怎样才能继续第二次读取每个整数(它们用空格分隔)

using namespace std;

int rowNum;


int main()
{
    fstream myfile;
    string rowNumT;

    myfile.open ("xxx_in.txt",ios::in | ios::out);
    if(myfile.is_open()){
        while(getline(myfile,rowNumT)){
            //cout << rowNumT ;
            istringstream (rowNumT) >> rowNum;
            cout << rowNum ;//how many children in integer form

        }
    }
    else cout << "Unable to open file";

    int heights[rowNum];

    myfile.close();
    return 0;
}

2 个答案:

答案 0 :(得分:2)

无需解析字符串和额外高度,简单使用: -

int npeople ;
int height ;
// std::vector<int> heights ; // Use std::vector
myfile >> npeople ;

while ( myfile >> height )
{
   // Use height ;
   // heights.push_back ( height );
}

OR

myfile >> npeople ;
std::vector<int> heights ;
std::copy( std::istream_iterator<int>( myfile ), 
           std::istream_iterator<int>(),
           std::back_inserter( heights )
          ) ;

另外,可以使用C ++ 11来实现以下功能:

myfile >> npeople ;
std::vector<int> heights { std::istream_iterator<int>( myfile ), 
                           std::istream_iterator<int>() 
                         };

答案 1 :(得分:0)

阅读和阅读的一种方式存储第二行(从第一行获取数字后)。

std::ifstream infile("file.txt");
std::string line;

while (std::getline(infile, line))
{
  std::istringstream iss(line);
  int n;
  std::vector<int> v;

  while (iss >> n)
  {
    v.push_back(n);
  }
}