如何在用c ++阅读时处理从文件中获得的信息?

时间:2015-02-26 21:11:43

标签: c++ file stream fstream

int i = 5;
char c = 'n';
string st = "cool";
ofstream my("we.txt");
my <<st<<","<<c<<","<<i<<","<<endl;
string s;

ifstream your("we.txt");
while(your){

    getline(your, st, ',');
    your>>c;
    your.ignore(1);
    your>>i;
    your.ignore(1);
    cout<<st<<","<<c<<","<<i<<endl;
}
my.close();

我甚至不知道你的.ignore(1)代表什么,但不知何故它有效。问题是它打印结果两次,为什么? 有人可以解释我如何处理我在文件中写的信息?如果我想保存一个文件3信息字符串交易,双倍价格和卖出的字符(y / n),关于我有的每个项目如何管理它? 它看起来像这样 Timberland,40岁,n; Gucci,10岁,y; ......等等。

我现在需要它,因为明天我有考试,感谢你的帮助,对不起我的英语!

1 个答案:

答案 0 :(得分:0)

对于双重打印的问题,这是因为在之后之后才设置eofbit标志,而不是在文件末尾读取之后。这意味着你的循环将迭代一次到多次。

我建议您改为使用getline来读取完整的行(在循环条件下),然后使用例如std::istringstream来解析这条线。

所以,例如。

while (std::getline(your, fullLine))
{
    std::istringstream istr(fullLine);

    getline(istr, st, ',');
    istr >> c;
    // etc.
}