我有一个关于*.txt
使用 C++ 读取文件的问题。我正在尝试仅读取某些特定符号(例如[start]
和)之间的部分数据[end]
。
我怎么能这样做?
我知道如何打开和读取整个文件,但我不知道如何只读取具有此类要求的一部分。
使用std::string
andstd::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++;
}
去这里的方法是逐字阅读,直到你得到想要的开始标签,然后你阅读并保存所有单词,直到阅读结束标签。
如果您自己创建该 .txt 文件,请以结构化方式创建它,并在开始时保留不同块的偏移量和大小。如果是这样,您可以从头开始读取所需数据块的偏移量,然后使用 fseek(或类似方法)跳转到那里。否则,您必须逐字阅读。