在实际工程中,经常遇到需要读取txt文件,txt文件中存的是一些小数或者整型数据,在c++中,可以利用字符串类和ifstream库文件对txt进行的读取,不过读回的数据经常是以字符串的形式返回,一般是txt的一行为一个字符串返回。那么如何从字符串中分离出整数或者是小数就涉及到字符串的分割问题,下面就该问题进行总结。
<强>需要读取的三文件如下:强>
代码如下:
# include# include # include 使用名称空间性病; int main () { 字符串年代;//每次读取一行三文件返回的字符串//读取一txt文件 ifstream infile1; infile1.open (“1. txt”); 而(getline (infile1 s)) { cout & lt; & lt;年代& lt; & lt;endl; } infile1.close ();//关闭文件 cin.get (); 返回0; } >之前 执行结果如下:
(1)函数getline是一行一行读取txt文件,读回的结果以字符串的形式存储在年代中,要读回具体的数据必须对字符串进行分离。
(2)打开txt必须用到fstream库中的ifstream类和其打开和关闭成员函数。
(3)文件读取后一定要记得关闭文件,即调用接近函数
1读取的txt中只有整形的情况(要读回的txt文件如上图中所示)
代码如下:
# include# include # include 使用名称空间性病;//如果字符串中都是整数 空白stringTOnum1(字符串,int * pdata) { bool temp=false;//读取一个数据标志位 int数据=https://www.yisu.com/zixun/0;//分离的一个数据 int m=0;//数组索引值 for (int i=0;我 =0),和(s[我]& lt;=' 9 '))//当前字符是数据,并一直读后面的数据,只要遇到不是数字为止 { temp=true;//读数据标志位置位 数据*=10; 数据+=[我],' 0 ');//字符在系统以ASCII码存储,要得到其实际值必须减去‘0’的ASCII值 我+ +; }//刚读取了数据 如果(临时)//判断是否完全读取一个数据 { pdata [m]=数据;//赋值 m + +; 数据=https://www.yisu.com/zixun/0; temp=false;//标志位复位 } } } int main () { int * pdata=new int [5]; 字符串年代;//读取第一个txt文件 ifstream infile1; infile1.open (“1. txt”); 而(getline (infile1 s)) { stringTOnum1(年代,pdata); for (int i=0; i<5,我+ +) cout & lt; & lt;pdata[我]& lt; & lt;“”; cout & lt; & lt;endl; } infile1.close (); cin.get (); 返回0; } >之前 执行的结果如下:
顺利地读取了每行数据并分离出了整型数据保存在了数组中。
(1)字符在系统中以其ASCII码存储,对于数字字符要得到其实际的值,必须减去‘0’字符的ASCII码,之后的ASCII码就与数字字符的数据一致。
(2)基本思想:当遇到一个字符是数据后,不停的循环读后面的字符,直到遇到不是数字字符为止。
2读取的三种中有小数的情况
读回的txt如下图所示:
分离字符的函数如下:
//如果字符串中有小的数 空白stringTOnum2 (string s、双* pdata) { bool temp=false; int ndata=https://www.yisu.com/zixun/0;//整数部分 双fdata=0;//小数部分 int n=0;//小数部分的位数 int m=0; for (int i=0;我=0),和(s[我]& lt;=' 9 ') | | (s[我]=='。'))//当前字符是数据或者是小数点 { temp=true; 如果(s[我]=='。')//遇到了小数点 {//不停的读取后面的小数 我+ +;//小数后的下一位 而((s[我]祝辞=' 0 '),和(s[我]& lt;=' 9 ')) { n——; fdata +=(战俘(10 n) * (s[我],' 0 ')); 我+ +; } }//没有遇到小数点 其他的 { ndata *=10; ndata +=(s[我],' 0 '); 我+ +; } }//刚读取了数据 如果(临时) { pdata [m]=ndata + fdata; m + +; ndata=https://www.yisu.com/zixun/0; fdata=0; n=0; temp=false; } } } c++中读写txt文件并分离字符的方法