C++ 下文件的读取和写入

/*
项目中使用到一个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();
}

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页