1樓:匿名使用者
假如是不規則文字(每行所佔空間不同),那麼在不增加其他索引的情況下,只能根據讀取到的換行個數確定行數。這樣效率勢必低下。
假如對儲存空間的節約要求不高,可以將詞庫檔案格式化(每行所佔空間相同),這樣seek起來會快很多。
c++ 讀檔案如何定位到某一行?
2樓:匿名使用者
c++不支援直接定位到某一行。不過可以通過先定位到檔案開始,然後把之前所有行均讀出的方式,使檔案定位到具體行。
具體**如下:
ifstream & seek_to_line(ifstream & in, int line)
//將開啟的檔案in,定位到line行。
return in;}
3樓:匿名使用者
沒有辦法。除非你一開始載入檔案時,分析共有多少行。做個記錄。不然沒辦法知道
4樓:匿名使用者
由於每一行長度不等,這是沒辦法的,如果可行,那資料庫系統就沒有存在的價值了
5樓:
木好辦法
只能從頭讀,數行數
如果檔案內容不變就好辦了,
建行號->檔案偏移的索引,行號又是連續的,可以省略那檢索就應該非常快了
6樓:匿名使用者
使用seekg()函式。
c++怎麼在txt檔案讀取中一行一行的讀內容
7樓:
#include
char buf[512];
int main()
重定向輸入流命令列: prog 8樓:嫑名字可以嗎 可以使用c++的庫函式getline實現。 getline會生成一個包含一串從輸入流讀入的字元的字串,直到以下情況發生會導致生成的此字串結束。 1)讀到檔案結束符; 2)遇到函式指定的結束符; 3)輸入達到最大限度。 getline有兩種過載: 引數說明: buffer: 讀取的資料將存在buffer中。 num:最多讀取num個字元。即之前所說的最大限度。 delim:結束符,當遇到指定的結束符時將結束輸入。在第一種過載中,結束符為\n,即遇到換行結束。 所以要實現整行讀取,使用第一種過載就可以了。示例**如下: #include using namespace std; int main() {char buf[1024];//儲存的buf。 while(getline(buf,sizeof(buf)))//讀取一行。 {cout << "read line:" < c或c++程式設計從txt檔案中讀取特定行並存入陣列 9樓:匿名使用者 1.用fgets函式可以讀取檔案中某行的資料,某列資料就必須一個一個讀入每行的第幾個字元,再存入到一個字串當中。 2.例程: #include #include void main() b[k]=0; printf("第%d行資料:%s\n",i,a); printf("第%d列資料:%s\n",j,b); fclose(fp);} 10樓: 1)如果每行長度一致;只讀開始的日期 (只需要年份和月份);採用精確的二分查詢。 2)如果長度大致一致,並且按照日期順序存放,可以大致計算一個位置,使用非精確的二分查詢。 (讀字元直到回車換行) 3)否則 必須 每次讀取一行資料。逐一查詢。 4)不論長度一致還是大概一致,都可以,只讀少量資料,就獲得每行的長度。 a)每行長度一致,只讀一行就可以精確知道,每行的精確長度。 b)每行長度大致一致,讀3到5 行求平均長度,就可以大概知道,每行的長度,不過需要像盲人摸象,那樣獲取所讀行的精確位置。 檔案位置(檔案指標)相關的函式 c:檔案代號: seek, telll, file *; fseek,ftell; c++: ifstream::seekg;ifstream::tellg; ofstream::seekp;ofstream::tellg; windows api: setfilepointer;getfilepointer; mfc cfile::seek;cfile::seektobengin;cfile::seektoend; 11樓:金色潛鳥 這是給定日期,輸出同年同月資料(存放在2維陣列a[10][31];裡) 程式原理:用fgets()讀入一行,用 sscanf(buf,"%d %d",&y,&m); 讀出年月,若年月滿足需要,則 用 sscanf(buf 。。)讀出10列資料,存入陣列。 #include #include int main(); };fclose(fin); for (j=0;j return 0; }如果要找前後10天資料,你可以先計算前後目標日期,用讀得年月日,符合開始日期,沒超過截止日期的行存起來就可以了。你可以模仿上面程式自己寫。 c++裡,讀取一個txt檔案裡的某一行,然後將這一行裡的每一個字串(用空格隔開的)存到陣列裡 12樓:匿名使用者 #include #include #include using namespace std; #define file_name "file.txt" void readfile(double arr, int len, int line) if (len<1 || line <1) return; int i = 0, j = 0; int s = 0; int h=0,t=0; string str; char buf[512]; char *p = null; ifstream file(file_name, ios::in); if(!file) cout <<"error!" memset(buf,0,512); file.getline(buf,512); while(buf[j] != '=') j++; while(buf[j] == '='|| buf[j] == ' ') j++; p = &buf[j]; str = p; while(t != -1) if (s>len-1) return; t = str.find(' ', h); if (t == -1)else if(t == 1)else{ arr[s++] = atof(str.substr(h,t-h).c_str()); h = t+1; cout << str< int main() double a[5]; readfile(a,5,3); cout 使用說明:一,巨集定義file_name定義要讀的檔案全路徑。二,readline()函式的引數,arr指要存放資料的陣列,len指陣列大小,line指要讀取的行號 親測可用,有不懂的可再問我 滿意請採納。 c語言怎麼讀取txt檔案中一行的資料? 13樓:du錯錯錯 開啟檔案 fopen("需要開啟的路徑")然後使用fgets函式讀取行 #include #include #include #define max_line 1024int main() while(fgets(buf,max_line,fp) != null) return 0;} 14樓:普洛智應 ifstream 的 getline 分隔符用行尾,要是有問題等我回到機器那再給你寫幾行。。。 對不起才看到不是c++ 15樓:吾好夢中殺豬 在文字檔案模式下,每行的末尾是固定的字元 0d 0a , 這兩個字元標誌著有換行, 其中0d對應ascii碼裡的 回車鍵'\r', 0a對應ascii碼裡的 換行符'\n' 所以,你只要能判斷連續的兩個字元是0d 0a那麼就意味著換行了。 你讀的時候,一次讀到一個大的buffer裡,然後進行字元的比較判斷,過濾出相應的資料。 c++中如何讀取指定檔案中任意行的內容 16樓:匿名使用者 ifstream infile; infile.open("c://test.txt"); // 開啟檔案 string str; // 字串 getline(infile, str, '\n'); // 讀取第一行內容,存入存str中 getline(infile, str, '\n'); // 讀取第二次,第二行內容,存入存str中 getline(infile, str, '\n'); // 讀取第三次,第三行內容,存入存str中 說明一下 \n 是讀取完整的一行 17樓:匿名使用者 1、用fgets函式可以讀取檔案中某行的資料,目的行之前的行直接用gets函式空讀跳過即可,到達目的行之後,讀取再存入到一個字串當中。 2、例程: #include #include void main() b[k]=0; printf("第%d行資料:%s\n",i,a); printf("第%d列資料:%s\n",j,b); fclose(fp);} 18樓:飛瑤小饕餮 你是要取出第三行的內容嗎?只能一行行讀,讀到第三行時取出來就是了 還是說你要找哪行出現指定字串取出那行資訊啊。那也是一行行讀啊,然後進行字串匹配 19樓:匿名使用者 1、每一行內容都以結構體存進去,開啟檔案後通過結構體長度調檔案指標位置 2、通過遍歷來實現,找『\n』來定行 20樓:匿名使用者 普通文字沒法快速實現,只有自定義的格式可以,先儲存行索引。然後只需要讀取行索引頭然後再根據索引頭快速定位到任意行。 沒有初始化索引頭的檔案,可以在第一次讀取時候先另外建立一個索引檔案,以後讀取就快了 泡影果果 從檔案中讀取資料,一行一行的讀取,用getline include fstream in cstring strfilename e 測試 a.txt 路徑是雙斜槓 in.open strfilename,ios in ios base in while in.eof 如果沒有讀到檔案結尾... foreach string str in system.io.file.readalllines d 123.txt encoding.default c 如何一行一行的讀取txt文字 每讀取一行內容 就把這一行的內容寫入一個字串陣列 插!答得好?答得好,你壓根就看不懂,有啥用?自個慢慢找資料解決... 會飛的小兔子 可以使用strtok函式做分割單詞。include voidmain chars 192.168.0.26 char delim char p printf s strtok s,delim while p strtok null,delim printf s p printf n 擴...運用C 如何讀取一行字串的指定字元
c怎麼遍歷讀取一行一行的文字,C 怎麼遍歷讀取一行一行的TXT文字?
C語言如何讀取一行資料,以空格分開