ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

C++中读写txt文件并分离字符的方法

C++中读写txt文件并分离字符的方法 在实际工程中经常遇到需要读取txt文件txt文件中存的是一些小数或者整型数据在C中可以利用string类和ifstream库文件对txt进行的读取不过读回的数据经常是以字符串的形式返回一般是txt的一行为一个字符串返回。那么如何从字符串中分离出整数或者是小数就涉及到字符串的分割问题下面就该问题进行总结。一、C中txt文件的读取需要读取的txt文件如下代码如下123456789101112131415161718#includeiostream#includestring#includefstreamusingnamespacestd;intmain(){string s;//每次读取一行txt文件返回的字符串//读取一txt文件ifstream infile1;infile1.open(1.txt);while(getline(infile1, s)){cout s endl;}infile1.close();//关闭文件cin.get();return0;}执行结果如下注意1函数getline是一行一行读取txt文件读回的结果以字符串的形式存储在s中要读回具体的数据必须对字符串进行分离。2打开txt必须用到fstream库中的ifstream类和其open和close成员函数。3文件读取后一定要记得关闭文件即调用close函数二、字符串的分离1读取的txt中只有整形的情况(要读回的txt文件如上图中所示)代码如下123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#includeiostream#includestring#includefstreamusingnamespacestd;//如果字符串中都是整数voidstringTOnum1(string s,int* pdata){booltempfalse;//读取一个数据标志位intdata0;//分离的一个数据intm0;//数组索引值for(inti0;is.length();i){while((s[i]0)(s[i]9))//当前字符是数据并一直读后面的数据只要遇到不是数字为止{temptrue;//读数据标志位置位data*10;data(s[i]-0);//字符在系统以ASCII码存储要得到其实际值必须减去‘0的ASCII值i;}//刚读取了数据if(temp)//判断是否完全读取一个数据{pdata[m]data;//赋值m;data0;tempfalse;//标志位复位}}}intmain(){int* pdata newint[5];string s;//读取第一个txt文件ifstream infile1;infile1.open(1.txt);while(getline(infile1, s)){stringTOnum1(s, pdata);for(inti0;i5;i)cout pdata[i] ;cout endl;}infile1.close();cin.get();return0;}执行的结果如下顺利地读取了每行数据并分离出了整型数据保存在了数组中。注意1字符在系统中以其ASCII码存储对于数字字符要得到其实际的值必须减去‘0字符的ASCII码之后的ASCII码就与数字字符的数据一致。2基本思想当遇到一个字符是数据后不停的循环读后面的字符直到遇到不是数字字符为止。2读取的txt中有小数的情况读回的txt如下图所示分离字符的函数如下1234567891011121314151617181920212223242526272829303132333435363738394041424344//如果字符串中有小数voidstringTOnum2(string s,double* pdata){booltempfalse;intndata0;//整数部分doublefdata0;//小数部分intn0;//小数部分的位数intm0;for(inti0;is.length();i){while((s[i]0)(s[i]9)||(s[i].))//当前字符是数据或者是小数点{temptrue;if(s[i].)//遇到了小数点{//不停的读取后面的小数i;//小数后的下一位while((s[i]0)(s[i]9)){n--;fdata (pow(10, n)*(s[i]-0));i;}}//没有遇到小数点else{ndata*10;ndata(s[i]-0);i;}}//刚读取了数据if(temp){pdata[m]ndatafdata;m;ndata0;fdata0;n0;tempfalse;}}}运行结果如下基本思想在原先的基础上不仅要判断是否遇到了数字字符还需要判断是都遇到了小数点‘.字符如果遇到小数点字符将后面的数据循环读取直到遇到不是数字字符为止。但是需要将其存为小数有移位。
返回列表