在c++中使用ifstream时,可以从文件的第二行或其他行开始吗?

Can you begin at the second, or other line, of a file when using ifstream in C++?

本文关键字:二行 开始 其他 文件 c++ ifstream      更新时间:2023-10-16

我有一个。txt文件,看起来像这样:

529.23
老爷车蓝3402.99
《锈桶布朗》44.99
柠檬黄4226.99

这里列出的第一个数字529.23将被放入一个单独的变量中。这将是我项目的总"余额"。接下来的项目是汽车的名称,颜色和价格要放入单独的变量后。我想知道的是,我能否读取第一行并将其赋值给变量(显然是字符串,然后将其更改为整数)?然后,我可以跳过第一行(529.23),从"Jalopy"开始阅读,并从那里将这些项分配给不同的变量吗?对此任何帮助都将不胜感激。谢谢。

这是我在stackoverflow上问的第一个问题。所以让我知道我如何才能提高我的"问问题"。谢谢。)

跳过一行只需使用std::getline而不使用结果:

std::ifstream is("file.txt");
std::string line;
std::getline(is, line); // skipping line 1
std::getline(is, line); // skipping line 2

别忘了检查错误。例如,考虑一下当文件为空,不存在,只有一行等时会发生什么……

您可以对第一行使用提取器:

double d;
if (file >> d)
{
    std::cout << d; // 529.23
}

对于其他行,您也可以使用提取器。下面的示例将第二行数据放入变量中:

std::string name, color;
double price;
if (file >> name >> color >> price)
{
    // ...
}