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