所以我有一个函数,应该从文件的每一行读取6个变量,然后将其显示给控制台,问题是字符串RenterName如果包含空格,则代码无法正常工作。这是我的代码:
...
void displayRentersInformations() {
int RenterID, Fine;
string RenterName, FlatNumber, Status;
ifstream in;
in.open("RentersInformation.txt");
if (!in) {
cout << "There is no information to be shown! \n";
}
else {
while (in >> RenterID >> RenterName >> FlatNumber >> Fine >> Status) {
cout << RenterID << RenterName << FlatNumber << Fine << Status << endl;
}
}
in.close();
}
这是文件中文本的示例:
223456000 Sami Ahmed A7 6000付费
因此,萨米·艾哈迈德(Sami Ahmed)应该以字符串形式存储在RenterName中,但是它们之间的空间造成了问题,我尝试使用getline,但是它不起作用,或者我只是没有以正确的方式使用它,如何解决此问题?
答案 0 :(得分:0)
问题是字符串RenterName如果包含空格,则代码无法正常工作。
否,该代码仍按预期的方式工作。考虑2个变量a
和b
以及文件中的以下行:
Hello from file
现在这样做:
in >> a >> b
将读取“ Hello”和“ from”,而不是“ Hello from”和“ file”或“ Hello”和“ from file”。
如果希望变量包含空格,则需要更改文件格式。例如,您可以使用定界符进行分隔:
Hello, from file
,然后使用std::getline()
读取整行,然后使用定界符分割。