c++ - 使用getline从文件中读取多行?

标签 c++ while-loop fstream getline

我正在尝试读取 names.txt 文件中的数据并输出每个人的全名和理想体重。使用循环从文件中读取每个人的姓名、英尺和英寸。 文件内容如下:

汤姆阿托 6个 3个 伊顿赖特 5个 5个 卡里奥基 5个 11 奥马尔艾哈迈德 5个 9

我为此使用以下代码:

string name;
int feet, extraInches, idealWeight;
ifstream inFile;

inFile.open ("names.txt");

while (getline(inFile,name))
{
    inFile >> feet;
    inFile >> extraInches;

    idealWeight = 110 + ((feet - 5) * 12 + extraInches) * 5;

    cout << "The ideal weight for " << name << " is " << idealWeight << "\n";

}
inFile.close();

当我运行这个时我得到输出:

Tom Atto 的理想体重 是185 理想体重 是-175

最佳答案

在读取两个 extraInches 值后在 while 循环中添加此语句。

inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

它会忽略您在 while 循环中读取的第二个整数之后的 '\n'。您可以引用:Use getline and >> when read file C++

关于c++ - 使用getline从文件中读取多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171803/

相关文章:

mysql - 数据库与 fstream 访问

c++ - (简单 C++)从文件中获取带有 vector 的矩阵

c++ - 对包含整数的文本文件进行排序,必须逐行进行排序

python - 检查一个值在 While 循环 Python 中是否仍然保持不变

c - 在 C 中使用字符串修剪删除空格、换行符和制表符

python - 使用条件或错误处理返回字符串中的特定字符

c++ - 从 streambuf 派生而不重写相应的流

c# - 使用系统;在 C# 中与使用命名空间标准;在 C++ 中

c++ - 哪个跨平台预处理器定义? (__WIN32__ 或 __WIN32 或 WIN32 )?

c++ - 就功能而言,c++11 range-for 不等于 classic for 吗?