c++ - 对文件使用 getline()
问题描述
我想知道为什么我的文件输入在我使用getline()
. 我试图temp
摆脱空间,但这也确实有效。
void getKittenFromFile(string file, roster& kitt) {
string temp;
ifstream inFS;
int i = kitt.size;
inFS.open(file);
if (!inFS.is_open()) {
cout << "Error! File not found." << endl;
}
else {
while (!inFS.eof() && kitt.size < 10) {
getline(inFS, kitt.kittens[i].name);
getline(inFS, kitt.kittens[i].color);
inFS >> kitt.kittens[i].score;
i++;
kitt.size++;
}
该文件如下所示:
Willow
dark brown
66
jack
brown
84
Will
blue
6
解决方案
正如其中一条评论所提到的,getline()
由于使用>>
. 要解决此问题,您可以使用get()
清除单个换行符,或者更完整的解决方案是使用:
inFS.ignore(numeric_limits<streamsize>::max(), '\n');
推荐阅读
- c++ - 您可以使用 std::bind (或其他)来更改返回类型吗?
- javascript - 如何停止弹出登录窗口?
- spring - Whitelabel 错误 Spring Boot - 项目结构
- javascript - 计算最大矩形大小,任意旋转,以适应边界框
- angular - 获取以角度代码返回 HttpErrorrResponse 的 API,错误代码 302 和错误包装的响应 json
- c++ - gdb 在 .so 文件中设置中断,没有命名的源文件
- firebase-realtime-database - Flutter 下拉菜单详细信息未保存到 Firestore
- spring-boot - 数据库用户未登录的 Spring Boot 安全性
- ios - AVAssetWriter - 设置自定义帧率
- javascript - 试图访问 var 中的最后一个元素