/*
项目中使用到一个conf的配置文件。读取文件。修改其中的数据并重新保存进去
记录下来方便下次使用
*/
#include<fstream>
#include<string>
#include<iostream>
#include <vector>
#include <stdio.h>
#include <io.h>
using namespace std;
//字符串的分割
void split(std::string str,std::string pattern,vector<std::string>& strvec)
{
std::string::size_type pos;
str+= pattern;//扩展字符串以方便操作
size_t size = str.size();
for(size_t i=0; i<size; i++)
{
pos=str.find(pattern,i);
if(pos < size)
{
std::string s=str.substr(i,pos-i);
strvec.push_back(s);
i=pos+pattern.size()-1;
}
}
}
void WirteIntoConfig(vector<vector<string>> vec)
{
ofstream fout;
fout.open("my_route.conf",ios_base::out);
string str = "\n";
if (fout.is_open())
{
for (size_t n=0; n < vec.size();n++)
{
if (vec[n].size() == 1)
{
string c = vec[n][0] + str;
fout<<(c);
}
else
{
string a = vec[n][0] + "=" + vec[n][1] +str;
fout << a;
}
}
}
fout.close();
}
void main()
{
vector<vector<string>> vecAllString;
ifstream in("my_route.conf");
string s;
while(getline(in,s))//着行读取数据并存于s中,直至数据全部读取
{
cout<<s.c_str()<<endl;
vector<std::string> vecStr;
split(s,"=",vecStr);
if (!vecStr.empty() && vecStr.size() == 2)
{
string::size_type index;
index = s.find("destinations");
if (index != string::npos)
{
vecStr[1] = "127.0.0.1:3306";
cout <<vecStr[1]<<endl;
}
}
if (vecStr.empty()){continue;}
vecAllString.push_back(vecStr);
}
in.close();
WirteIntoConfig(vecAllString);
getchar();
}
C++ 下文件的读取和写入
最新推荐文章于 2022-05-30 19:48:16 发布