所以我正在编写一个处理读入和写入文件的程序。我使用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”等等。难道我做错了什么。任何帮助将不胜感激。
答案 0 :(得分:2)
您显示的代码应该适用于该文件。所以某些东西必须与你想象的不同。最可能的罪魁祸首是:
inFile >> name
getline(inFile,name)
醇>
也许你改变了一些东西,忘了保存或重新编译,或者你正在阅读一个不同于你想象的文件。
顺便说一句,从您的变量声明开始,您可能计划将getline()
调用与inFile >> income
之类的提取运算符调用混合在一起。混合这些需要小心,因为提取操作符留下getline()
可能随后读取的尾随空格。 this底部附近有更多信息。