C++?使用getline()從文件中讀取一行字符串方法示例
getline() 方法
getline() 方法從 cin 輸入流緩沖區(qū)中讀取一行字符串。在此基礎上,getline() 方法還適用于讀取指定文件中的一行數(shù)據(jù),本節(jié)就給大家做詳細的講解。

我們知道,getline() 方法定義在 istream 類中,而 fstream 和 ifstream 類繼承自 istream 類,因此 fstream 和 ifstream 的類對象可以調用 getline() 成員方法。
文件流對象調用 getline() 方法
當文件流對象調用 getline() 方法時,該方法的功能就變成了從指定文件中讀取一行字符串。該方法有以下 2 種語法格式:
istream & getline(char* buf, int bufSize); istream & getline(char* buf, int bufSize, char delim);
其中,第一種語法格式用于從文件輸入流緩沖區(qū)中讀取 bufSize-1 個字符到 buf,或遇到 \n 為止(哪個條件先滿足就按哪個執(zhí)行),該方法會自動在 buf 中讀入數(shù)據(jù)的結尾添加 '\0'。第二種語法格式和第一種的區(qū)別在于,第一個版本是讀到 \n 為止,第二個版本是讀到 delim 字符為止。\n 或 delim 都不會被讀入 buf,但會被從文件輸入流緩沖區(qū)中取走。以上 2 種格式中,getline() 方法都會返回一個當前所作用對象的引用。比如,obj.getline() 會返回 obj 的引用。

注意,如果文件輸入流中 \n 或 delim 之前的字符個數(shù)達到或超過 bufSize,就會導致讀取失敗。
舉例
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char c[40];
//以二進制模式打開 in.txt 文件
ifstream inFile("in.txt", ios::in | ios::binary);
//判斷文件是否正常打開
if (!inFile) {
cout << "error" << endl;
return 0;
}
//從 in.txt 文件中讀取一行字符串,最多不超過 39 個
inFile.getline(c, 40);
cout << c ;
inFile.close();
return 0;
}假設 in.txt 文件中存有如下字符串:

http://c.biancheng.net/cplus/
則程序執(zhí)行結果為:
http://c.biancheng.net/cplus/
當然,我們也可以使用 getline() 方法的第二種語法格式。例如,更改上面程序中第 15 行代碼為:
inFile.getline(c,40,'c');
這意味著,一旦遇到字符 'c',getline() 方法就會停止讀取。 再次運行程序,其輸出結果為:
http://
另外,如果想讀取文件中的多行數(shù)據(jù),可以這樣做:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char c[40];
ifstream inFile("in.txt", ios::in | ios::binary);
if (!inFile) {
cout << "error" << endl;
return 0;
}
//連續(xù)以行為單位,讀取 in.txt 文件中的數(shù)據(jù)
while (inFile.getline(c, 40)) {
cout << c << endl;
}
inFile.close();
return 0;
}假設 in.txt 文件中存有如下數(shù)據(jù):
http://c.biancheng.net/cplus/
http://c.biancheng.net/python/
http://c.biancheng.net/java/
則程序執(zhí)行結果為:
http://c.biancheng.net/cplus/
http://c.biancheng.net/python/
http://c.biancheng.net/java/
以上就是C++ 使用getline()從文件中讀取一行字符串方法示例的詳細內容,更多關于C++ getline讀取文件字符串的資料請關注腳本之家其它相關文章!

