C++读写txt文件

本文主要介绍:C++利用ifstream和ofstream函数读写txt文件,包含矩阵以及字符串的读写。

说明:

        需要添加的头文件有:   #include<sstream>     

                                                    #include<iostream>    

                                                    #include<fstream>     

                                                    #include<string>

        同时需要添加命名空间:using namespace std;

一、读取矩阵

有时txt存储的是矩阵元素,如果矩阵元素之间是以空格为间隔,可以用以下程序读取:

	ifstream infile;//定义文件变量
	infile.open(txtPath,ios::in);//打开txtPath为文件路径
	if(!infile)
	{
		AfxMessageBox("读取txt文件失败!");
		return FALSE;
	}
	string temp,temp2mat;//定义中间变量
	
	while(getline(infile,temp)) //读取一行,while循环,直到文件最后一行
	{
		istringstream LineBand(temp);//转化成数据流
		
		while(LineBand>>temp2mat) //依次输出一个数给temp2mat,直到该行最后一个数
		{
			int Value = atoi(temp2mat.data());//将temp2mat由字符转化成整型,如果是浮点数,atoi改成atof
			
		}
	}
	
	infile.close();//关闭文件
二、输出矩阵

	ofstream outfile;//定义文件变量
	outfile.open(OutPath,ios::out); //创建文件,OutPath为创建txt路径
	if(!outfile)
	{
		AfxMessageBox("创建txt文件失败!");
		return FALSE;
	}
	
	for(i=0;i<LineNum;i++)//依次写入每行,LineNum要写的行的个数
	{
		for(j=0;j<RowNum;j++)//依次写入数字,以空格为间隔,RowNum该行的数字个数
			outfile<<x<<" "; //以空格为间隔写数x
			
		outfile<<"\n"; //写完一行换行
	}

	outfile.close();//关闭文件


:有时候可能一次写完之后,希望下次接着写上次的写,此时只需要修改打开文件的类型: outfile.open(OutPath,ios::out | ios::app); //ios::app  在文件尾追加

相关其他类型可参考博客:http://www.cnblogs.com/zhcncn/archive/2013/01/08/2851656.html

三、读取字符串

可以读取字符串,也可以是汉字。

	ifstream infile; //定义文件
	infile.open(inPath,ios::in);//inPath txt路径
	if(!infile)
	{
		AfxMessageBox("读取特征文件失败!");
		return ;
	}
	string temp;
	char str[64]; 
	CString str2;
	while(getline(infile,temp)) //依次读取一行,直到文件结束
	{
		memset(str, '\0', sizeof(str)); //读取结果赋给char*型
		memcpy(str,temp.c_str(),temp.size());

		str2 = temp.c_str();  //读取结果赋给CString型
	}

	infile.close();//关闭文件

四、写字符串

	ofstream outfile;//定义文件变量
	outfile.open(inPath,ios::out); //创建文件,OutPath为创建txt路径
	if(!outfile)
	{
		AfxMessageBox("创建txt文件失败!");
		return ;
	}
	int LineNum =1; //写的行数
	char str[] = "txt";
	CString str2 = "你好";
	for(int i=0;i<LineNum;i++)//依次写入每行,LineNum要写的行的个数
	{
		outfile<<str;
		outfile<<"\n"; //写str字符串

		outfile<<str2;
		outfile<<"\n"; //写CString字符串
	}

	outfile.close();//关闭文件




你可能感兴趣的:(写txt,读txt,txt以空格间隔数据,C++读txt,读字符串)