Txt文件按每行读取和写入操作

读取txt文件

读取一个TXT文件中的每一行到一个向量中,代码如下

bool readTxtfile(string strPath, vector<vector<float>>& TxtData)
{
     
	ifstream txtfile(strPath);
	if (!txtfile.is_open()) return 0;

	string str;
	while (getline(txtfile, str))
	{
     
		istringstream input(str);
		vector<float> everyRow;
		float p;

		while (input >> p)
		{
     
			everyRow.push_back(p);
			//cout <<"p:"<< p << endl;
		}
		TxtData.push_back(everyRow);
	}
	txtfile.close();
	
	//if (TxtData.size() < 100) return 0;
	return 1;
}


写入txt文件

一行一行写入内容到指定TXT文件中,如果想要一次写入多行,如格式为 vector 的数据,可在下列代码中加上一层for循环,代码如下

bool writeTxtfile(string strPath,vector<float>& everyRowTxtData)
{
     
	//ofstream txtfile(strPath);   //覆盖写入
	ofstream txtfile(strPath, ofstream::app);  //不覆盖写入
	if (!txtfile.is_open()) return 0;
 
	if(everyRowTxtData.size() == 3)    //当数据较多时也可用循环写入
	{
     
		txtfile << everyRowTxtData[0] << ' ' <<
			everyRowTxtData[1] << ' ' <<
			everyRowTxtData[2] << ' ' <<
			everyRowTxtData[3] << ' ' << "\n";
		return 1;
	}
	return 0;
}

用法如下,另外的,对string可以使用更改文件名方法replace,

string path = "D:/my_path/";
string save_path = "D:/save_path/";
vector<vector<float>> TxtData;
//string Txtname = name.replace(4, 3, "txt");   
readTxtfile(path  + Txtname , TxtData)
writeTxtfile(save_path + Txtname , TxtData[i]);

你可能感兴趣的:(C++基础,c++)