C ++帮助使用ifstream获取getline函数

时间:2010-03-17 19:48:55

标签: c++ ifstream getline

所以我正在编写一个处理读入和写入文件的程序。我使用getline()函数,因为文本文件中的某些行可能包含多个元素。到目前为止,我从来没有遇到过getline的问题。这就是我得到的。

文本文件如下所示:

  John Smith                       // Client name
  1234 Hollow Lane, Chicago, IL    // Address
  123-45-6789                      // SSN
  Walmart                          // Employer
  58000                            // Income
  2                                // Number of accounts the client has
  1111                             // Account Number
  2222                             // Account Number

这样的代码:

ifstream inFile("ClientInfo.txt");
if(inFile.fail())
{
    cout << "Problem opening file.";
}
else
{
    string name, address, ssn, employer;
    double income;
    int numOfAccount;

    getline(inFile, name);
    getline(inFile, address);
    // I'll stop here because I know this is where it fails.

当我调试这段代码时,我发现name ==“John”,而不是name ==“John Smith”,而Address ==“Smith”等等。难道我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您显示的代码应该适用于该文件。所以某些东西必须与你想象的不同。最可能的罪魁祸首是:

  1. 该文件实际上有一个换行符,您认为它只有一个空格
  2. 代码使用您认为使用inFile >> name
  3. getline(inFile,name)

    也许你改变了一些东西,忘了保存或重新编译,或者你正在阅读一个不同于你想象的文件。

    顺便说一句,从您的变量声明开始,您可能计划将getline()调用与inFile >> income之类的提取运算符调用混合在一起。混合这些需要小心,因为提取操作符留下getline()可能随后读取的尾随空格。 this底部附近有更多信息。