• 文件替换子字符串


    #include <fstream>//ifstream读文件,ofstream写文件,fstream读写文件
    
    #include <string>//文本对象,储存读取的内容
    #include <iostream>//屏幕输出cout
    #include <cstdlib>//调用system("pause");
    #include <windows.h>//用于函数SetConsoleOutputCP(65001);更改cmd编码为utf8
    using namespace std;
    void replaceAllStr(string& str)
    {
        string strName = "stroke="";
        int nLenName = strName.length();
        string strEnd = """;
        string strreplace = strName + string("black")+ strEnd +string(" ");
        int nReplacelen = strreplace.length();
        string strTemp = str;
        string str2 = str;
        int nTotalIndex = 0;
        while (true)
        {
            int nPos1 = strTemp.find(strName);
            if (nPos1 == strTemp.npos) break;
            string strTemp2 = strTemp.substr(nPos1+ nLenName, strTemp.length()-(nPos1 + nLenName));
            int nPos2 = strTemp2.find(strEnd);
            if (nPos2 == strTemp.npos) break;
            int strokeAlllen = (nPos2 + 1) + nLenName;
            nTotalIndex += nPos1;
    
            str.replace(nTotalIndex, strokeAlllen, strreplace);
            nTotalIndex += nReplacelen;
            strTemp = str.substr(nTotalIndex,str.length()- nTotalIndex);
        }
    }
    int main()
    {
    //    string str = "12 stroke="12">1234 stroke="3456">12 stroke="12">1234 stroke="3456">12 stroke="12">1234 stroke="3456">12 stroke="12">1234 stroke="3456">";
    //    replaceAllStr(str);
    //    cout << str << endl;
    //    system("pause");
    //    return 0;
        GetTickCount()
        SetConsoleOutputCP(65001);
        ifstream in("D:\clq\weixin_file\WXWork\1688853094618981\Cache\File\2020-10\123\14334451-1-40611184.svg");
        string line;
        ofstream outfile("D:\clq\weixin_file\WXWork\1688853094618981\Cache\File\2020-10\123\temp.svg");
        if (in) // 有该文件
        {
            while (getline(in, line)) // line中不包括每行的换行符
            {
            //    cout << "-------------------" << endl;
            //    cout << line << endl;
                
                replaceAllStr(line);
            //    if(line.find("")
                outfile << line << "
    ";
            //    cout << line << endl;
            //    cout << "-------------------" << endl;
            }
        }
        else // 没有该文件
        {
            cout << "no such file" << endl;
        }
        outfile.close();
        in.close();
        system("pause");
        return 0;
    
    }
    void replaceAllStr2(string& str, string strName = "stroke="none"", string strReplace = "stroke="black"")
    {
        int strokeAlllen = strName.length();
        int nReplacelen = strReplace.length();
        string strTemp = str;
        int nTotalIndex = 0;
    
        while (true)
        {
            int nPos1 = strTemp.find(strName);
            if (nPos1 == strTemp.npos) break;
            nTotalIndex += nPos1;
            str.replace(nTotalIndex, strokeAlllen, strReplace);
            nTotalIndex += nReplacelen;
            strTemp = str.substr(nTotalIndex, str.length() - nTotalIndex);
        }
    }
    //示例调用
    string str = "12 stroke="none">1234 stroke="3456">";
        replaceAllStr2(str);
        cout << str << endl;
        system("pause");
  • 相关阅读:
    debugs
    MySQL事务隔离级别详解(转)
    解决SQL Server管理器无法连接远程数据库的问题(转)
    jQuery中click(),bind(),live()的区别(转)
    各jQuery选择器的用法(转)
    使用JQuery获取对象的几种方式(转)
    HTML中元素的定位方式
    深入浅出REST(转载)
    jQuery-Selectors(选择器)的使用(二、层次篇)(转载)
    linux常用命令
  • 原文地址:https://www.cnblogs.com/leochan007/p/13900353.html
Copyright © 2020-2023  润新知