我必须编写一个程序来读取这样的文件:
的 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;
}
答案 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);
}
}