1

所以我正在编写一个处理读取和写入文件的程序。我使用 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" 等等。难道我做错了什么。任何帮助将非常感激。

4

1 回答 1

2

您显示的代码应该适用于该文件。所以有些东西一定和你想象的不一样。最可能的罪魁祸首是:

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

也许您更改了某些内容并忘记了保存或重新编译,或者您正在阅读与您想象的不同的文件。

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

于 2012-01-25T18:44:54.063 回答