【问题标题】:Reading a text file C++读取文本文件 C++
【发布时间】:2021-03-10 02:46:12
【问题描述】:

我正在尝试从文本文件中检索某些行。我正在使用:

#include <iostream>
#include <fstream>

using namespace std;

void parse_file()
{
    std::ifstream file("VampireV5.txt");
    string str= "Clan";
    string file_contents;
    while (std::getline(file, str))
    {
        file_contents += str;
        file_contents.push_back('\n');

    }
  cout << file_contents;

  file.close();
}

int main()
{
    parse_file();
    return 0;
}

我想得到唯一包含“Clan”的行,直到'\n'。我尝试在 while 循环中添加一个 if,但它没有返回任何内容。

有没有办法让它一次得到 1 行?

【问题讨论】:

  • 你到底得到了什么?文件是否存在?成功打开了吗?你试过输出调试信息吗?
  • 变量 file_content 包含文本直到其结束。我希望它只得到包含“Clan”这个词的那一行;
  • 此外,您没有检查任何内容。考虑使用if (str.find("Clan") == 0) 来检查该行是否以您要查找的单词开头。
  • 如果我理解得很好,你必须检查字符串“Clan”是否包含在字符串str中。您可以找到相关信息here。然后,当你得到这一行时,你可以在 while 循环中中断
  • @Damien Merci beaucoup,这正是我所需要的。

标签: c++ file parsing


【解决方案1】:

您的代码几乎是正确的:它逐行读取文件并将内容附加到您的字符串中。

但是,由于您只想要那一行,因此您还需要检查您要查找的内容。

这段代码 sn-p 应该只给出以单词“Clan”开头的行。 如果要检查字符串是否在行中的任何位置,请考虑检查!= string::npos。

void parse_file()
{
    std::ifstream file("VampireV5.txt");
    string str;
    string file_contents;
    while (std::getline(file, str))
    {
        if (str.find("Clan") == 0)
        {
            file_contents += str;
            file_contents.push_back('\n');
        }

    }
  cout << file_contents;

  file.close();
}

【讨论】:

    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2017-05-02
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多