说明
C++中对字符串读写操作用到了头文件fstream,需要包含#include fstream.h。该头文件包含三个类,分别是:
- ifstream—从已有的文件中读。
- ofstream—从已有的文件中写。
- fstream—打开文件供读写。
读取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<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]);