生活随笔
收集整理的這篇文章主要介紹了
如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?原文地址:? http://blog.csdn.net/stpeace/article/details/12404925
如下代碼均在Windows/VC++6.0下測試通過, 請一定注意linux和Windows文件格式的區(qū)別
? ? ? ?先用C語言寫一個丑陋的程序:
[cpp] view plain
copy #include?<stdio.h>??#include?<stdlib.h>??int?main()??{??????FILE?*fp;??????if(NULL?==?(fp?=?fopen("1.txt",?"r")))??????{??????????printf("error\n");??????????exit(1);??????}????????char?ch;??????while(EOF?!=?(ch=fgetc(fp)))??????{??????????printf("%c",?ch);??????}????????fclose(fp);????????return?0;??}??
???? 你只能看到結(jié)果,卻沒法利用每一行。 我們來改為:
[cpp] view plain
copy ????#include?<stdio.h>??#include?<string.h>????int?main()??{??????char?szTest[1000]?=?{0};??????int?len?=?0;????????FILE?*fp?=?fopen("1.txt",?"r");??????if(NULL?==?fp)??????{??????????printf("failed?to?open?dos.txt\n");??????????return?1;??????}????????while(!feof(fp))??????{??????????memset(szTest,?0,?sizeof(szTest));??????????fgets(szTest,?sizeof(szTest)?-?1,?fp);???????????printf("%s",?szTest);??????}????????fclose(fp);????????printf("\n");????????return?0;??}??
? ? ? 這樣, 我們就是整行讀取了。
? ? ? 感覺C的讀取方法有點丑陋,還是看看C++吧:
[cpp] view plain
copy #include?<fstream>??#include?<string>??#include?<iostream>??using?namespace?std;????int?main()??{??????ifstream?in("1.txt");??????string?filename;??????string?line;????????if(in)???????{??????????while?(getline?(in,?line))???????????{???????????????cout?<<?line?<<?endl;??????????}??????}??????else???????{??????????cout?<<"no?such?file"?<<?endl;??????}????????return?0;??}??
?????當然,你可以對上述程序進行修改,讓1.txt中的每一行輸入到2.txt中,如下:
[cpp] view plain
copy #include?<fstream>??#include?<string>??#include?<iostream>??using?namespace?std;????int?main()??{??????ifstream?in("1.txt");??????ofstream?out("2.txt");??????string?filename;??????string?line;????????if(in)???????{??????????while?(getline?(in,?line))???????????{???????????????cout?<<?line?<<?endl;??????????????out?<<?line?<<?endl;???????????}??????}??????else???????{??????????cout?<<"no?such?file"?<<?endl;??????}????????return?0;??}??
????? 結(jié)果, 2.txt和1.txt中的內(nèi)容完全一致,你可以用Beyond Compare比較一下,我比較過了。
?
???? 看來上述程序還能實現(xiàn)文件的復制呢,如下:
[cpp] view plain
copy #include?<fstream>??#include?<string>??#include?<iostream>??using?namespace?std;????void?fileCopy(char?*file1,?char?*file2)??{??????????????????ifstream?in(file1);??????ofstream?out(file2);??????string?filename;??????string?line;????????while?(getline?(in,?line))??????{???????????out?<<?line?<<?endl;??????}??}????int?main()??{??????fileCopy("1.txt",?"2.txt");??????return?0;??}??
???? 當然了,上述程序只能針對文本文件(不僅僅是.txt),對其它類型的文件,不適合。
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。