2013-05-06 58 views
2

我對使用C++讀取*.txt文件有疑問。我試圖只讀取[start][end]等特定符號之間的部分數據。用C++讀取txt文件的一部分

我該怎麼做?

我知道如何打開和閱讀整個文件,但我不知道如何只讀取其中的一部分與這樣的要求。

回答

1

使用std::stringstd::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++; 
} 

此外,您可以使用std::string類的substr()方法篩選出的子字符串。你也可以用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++; 
} 
0

去這裏的方法是逐字閱讀,直到找到想要的開始標記,然後讀取並保存所有單詞,直到讀取結束標記。

0

如果您自己創建.txt文件,請以結構化方式創建該文件,並在開始時保留不同塊的偏移量和大小。如果是這樣,您可以從頭開始讀取所需數據塊的偏移量,並使用fseek(或類似)跳轉到那裏。否則,你必須逐字閱讀。