2

我有一个关于*.txt使用 C++ 读取文件的问题。我正在尝试仅读取某些特定符号(例如[start]和)之间的部分数据[end]

我怎么能这样做?

我知道如何打开和读取整个文件,但我不知道如何只读取具有此类要求的一部分。

4

3 回答 3

1

使用std::stringandstd::getline过滤掉行并从那里开始。例子:

std::ifstream input("someText.txt");
std::string line;
unsigned int counter = 0;
while (std::getline(input, line))
{
    std::cout << "line " << counter << " reads: " << line << std::endl;
    counter++;
}

此外,您可以使用类的substr()方法std::string来过滤掉子字符串。std::getline您还可以使用可选的第三个参数(即分词器)来分词(而不是行) 。例子:

std::ifstream input("someText.txt");
std::string word;
unsigned int counter = 0;
while (std::getline(input, word, ' '))
{
    std::cout << "word #" << counter << " is: " << word << std::endl;
    counter++;
}
于 2013-05-06T13:44:03.983 回答
0

去这里的方法是逐字阅读,直到你得到想要的开始标签,然后你阅读并保存所有单词,直到阅读结束标签。

于 2013-05-06T09:22:29.093 回答
0

如果您自己创建该 .txt 文件,请以结构化方式创建它,并在开始时保留不同块的偏移量和大小。如果是这样,您可以从头开始读取所需数据块的偏移量,然后使用 fseek(或类似方法)跳转到那里。否则,您必须逐字阅读。

于 2013-05-06T09:28:54.457 回答