【发布时间】:2021-03-22 00:38:15
【问题描述】:
通过getline 读取文件时,\n 会写入结果字符。
文件中的数据是这样写的(本例中_代表空格):
2_
c_3_
a_1_
文件中的第一个数字是记录数。
代码:
getline(autorisationFile, temp, ' ');
while (getline(autorisationFile, temp, ' ')) {
arr[i].login = temp;
getline(autorisationFile, temp, ' ');
arr[i].password = temp;
i++;
}
【问题讨论】:
-
你读过
std::getline的文档吗?它提取直到“下一个可用的输入字符是delim,正如Traits::eq(c, delim)测试的那样,在这种情况下,分隔符是从输入中提取的,但不会附加到str。”中你的情况delim是' ',而不是'\n',所以'\n'被提取,并附加到str。相关阅读(可能重复):stackoverflow.com/questions/37957080/… -
也许,考虑嵌套循环,其中外循环读取一行并将
std::istringstream用于内循环。顺便提一句。std::getline()和' '作为分隔符...格式化输入运算符 (>>) 默认使用空格作为分隔符(顺便说一句。² 空格覆盖空格以及'\n')。所以,std::getline()在这种情况下可能被过度设计了。 -
您能否更明确地说明您的问题?我猜你想知道如何在没有
\n的情况下填写password字段?