欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

C++中讀寫txt文件并分離字符的方法

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

在實際工程中,經常遇到需要讀取txt文件,txt文件中存的是一些小數或者整型數據,在C++中,可以利用string類和ifstream庫文件對txt進行的讀取,不過讀回的數據經常是以字符串的形式返回,一般是txt的一行為一個字符串返回。那么如何從字符串中分離出整數或者是小數就涉及到字符串的分割問題,下面就該問題進行總結。

一、C++中txt文件的讀取

需要讀取的txt文件如下:

代碼如下:

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
	string s;		//每次讀取一行txt文件返回的字符串
	//讀取一txt文件
	ifstream infile1;
	infile1.open("1.txt");
	while(getline(infile1, s))
	{
		cout << s << endl;
	}
	infile1.close();	//關閉文件
	cin.get();
	return 0;
}

執(zhí)行結果如下:

注意:

(1)函數getline是一行一行讀取txt文件,讀回的結果以字符串的形式存儲在s中,要讀回具體的數據必須對字符串進行分離。

(2)打開txt必須用到fstream庫中的ifstream類和其open和close成員函數。

(3)文件讀取后一定要記得關閉文件,即調用close函數

二、字符串的分離

1讀取的txt中只有整形的情況(要讀回的txt文件如上圖中所示)

代碼如下:

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
 
//如果字符串中都是整數
void stringTOnum1(string s, int* pdata)
{
	bool temp=false;		//讀取一個數據標志位
	int data=0;				//分離的一個數據
	int m=0;				//數組索引值
	for(int i=0;i<s.length();i++)
	{
		while((s[i]>='0')&&(s[i]<='9'))		//當前字符是數據,并一直讀后面的數據,只要遇到不是數字為止
		{
			temp=true;		//讀數據標志位置位
			data*=10;
			data+=(s[i]-'0');		//字符在系統(tǒng)以ASCII碼存儲,要得到其實際值必須減去‘0'的ASCII值
			i++;
		}
		//剛讀取了數據
		if(temp)		//判斷是否完全讀取一個數據
		{
			pdata[m]=data;		//賦值
			m++;
			data=0;		
			temp=false;		//標志位復位
		}
	}
}
 
 
int main()
{
	int* pdata =new int[5];
	string s;
 
	//讀取第一個txt文件
	ifstream infile1;
	infile1.open("1.txt");
	while(getline(infile1, s))
	{
		stringTOnum1(s, pdata);
		for(int i=0;i<5;i++)
			cout << pdata[i] << " ";
		cout << endl;
	}
	infile1.close();
	cin.get();
	return 0;
}

執(zhí)行的結果如下:

順利地讀取了每行數據并分離出了整型數據保存在了數組中。

注意:

(1)字符在系統(tǒng)中以其ASCII碼存儲,對于數字字符要得到其實際的值,必須減去‘0'字符的ASCII碼,之后的ASCII碼就與數字字符的數據一致。

(2)基本思想:當遇到一個字符是數據后,不停的循環(huán)讀后面的字符,直到遇到不是數字字符為止。

2讀取的txt中有小數的情況

讀回的txt如下圖所示:

分離字符的函數如下:

//如果字符串中有小數
void stringTOnum2(string s, double* pdata)
{
	bool temp=false;
	int ndata=0;		//整數部分
	double	fdata=0;	//小數部分
	int n=0;			//小數部分的位數
	int m=0;
	for(int i=0;i<s.length();i++)
	{
		while((s[i]>='0')&&(s[i]<='9')||(s[i]=='.'))		//當前字符是數據或者是小數點
		{
			temp=true;
			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]=ndata+fdata;
			m++;
			ndata=0;
			fdata=0;
			n=0;
			temp=false;
		}
	}
}

運行結果如下:

基本思想:在原先的基礎上不僅要判斷是否遇到了數字字符還需要判斷是都遇到了小數點‘.'字符,如果遇到小數點字符,將后面的數據循環(huán)讀取直到遇到不是數字字符為止。但是需要將其存為小數,有移位。

以上這篇C++中讀寫txt文件并分離字符的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

上一篇:C語言實現俄羅斯方塊源代碼

欄    目:C語言

下一篇:C++檢測鍵盤某鍵是否按下的方法

本文標題:C++中讀寫txt文件并分離字符的方法

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/741.html

網頁制作CMS教程網絡編程軟件編程腳本語言數據庫服務器

如果侵犯了您的權利,請與我們聯系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網 版權所有