[英]C++ Reading ints and strings from file
I have a file that looks like : 我有一个看起来像的文件:
4
Sam Stone
2000
Freida Flass
100500
Tammy Flass
5000
Rich Raptor
55000
I am trying to read from it, but the first getline in the while loop always returns nothing. 我正在尝试从中读取内容,但是while循环中的第一个getline始终不返回任何内容。 The int 4 gets read correctly. 正确读取int 4。
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>
using namespace std;
const int SIZE = 60;
struct person
{
string name;
double money;
};
int main()
{
char filename[SIZE];
string input;
char inputs [50];
int value;
int count = 0;
vector<person> Members;
ifstream inFile;
inFile.open("carinfo.txt");
if (!inFile.is_open()){ cout << "Could not open fle"; }
inFile >> value;
Members.resize(value);
while (inFile.good())
{
inFile.getline(inputs, SIZE); //getline(inFile, input, '\n');
inFile >> value;
count++;
}
cout << "Total lines = " << count;
system("pause");
return 0;
}
Consider using std::string
and op>>(std::istream, person)
to read the elements, this works for me 考虑使用std::string
和op>>(std::istream, person)
读取元素,这对我有用
#include <string>
#include <vector>
#include <limits>
#include <fstream>
#include <iostream>
#include <iterator>
struct person
{
std::string name;
double money;
};
//read in 1 person
std::istream& operator>>(std::istream& is, person& p) {
is >> p.money;
is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(is, p.name);
return is;
}
int main() {
//open stream
std::ifstream file("fname");
//create vector, let the stream operators do the hard work
std::vector<person> v((std::istream_iterator<person>(file)),
std::istream_iterator<person>());
std::cout << "count: " << v.size();
}
http://en.cppreference.com/w/cpp/iterator/istream_iterator http://en.cppreference.com/w/cpp/iterator/istream_iterator
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.