替换.txt文件中的多个字符串

时间:2013-06-06 04:53:48

标签: c++ string

我正在尝试编写一个程序:

  • 打开1.txt(包含我们需要找到的字符串)
  • 将它们读入一个新的字符串数组,单独的元素
  • 打开2.txt(包含我们要查找要替换的字符串的文档)
  • 读取行 - >将输入字符串行文字与我们在1.txt
  • 中找到的所有元素进行比较
  • 如果匹配,请替换有问题的字符串,将该行添加到字符数组中 - 但如果匹配,则同一行上可能还有另一个违规字符串,我该如何补偿?
  • 否则,将该行添加到char array()
  • 将char数组写入新的输出文件(包含原始文本+替换的字符串)

基本上,就像在文本文档上按CRTL + H一样,替换字符串,除了多次! (大约70个字符串要替换)

首先,这甚至可能吗?如果是这样,那么你可以推荐的最佳方式是什么。

顺便说一下,我生成随机字符串作为替换,不用担心。

这是我到目前为止所做的:

.... CODE above here
ifstream instubFile;
ofstream outstubFile;

outstubFile.open("Temp.txt",ios::out);

instubFile.open("stub.txt",ios::in | ios::out);
instubFile.seekg(0, instubFile.end);
unsigned int m_uNumChars = instubFile.tellg();
instubFile.seekg(0,instubFile.beg);
string inBuf;
if (instubFile) // if it opened the file
{
    // read each line, check for any string matches
    // if string match, replace it, add line to output string
    // else, add the line to output string
    while(getline(instubFile,inBuf)) // read the line
    {
        cout << numberoflines << endl;
        for (int i = 0; i < numberoflines ; i++) // compare chars in buffer with toreplace string
        {
           int m_iSize = inBuf.find(m_szToReplace[i]);
           cout << m_iSize << endl;
           if (m_iSize > 0)
            {// found
                inBuf.replace(m_iSize,m_szReplacement[i].length(),m_szReplacement[i]);
                outstubFile << m_szReplacement[i] << endl;
            }
        }
    }
}
else
{
    cout << "Could not open stub.txt" << endl;
}
cout << inBuf << endl;
cin.get();

delete[] m_szReplacement;
delete[] m_szToReplace;

return 0;
}


/*
        int spot = inBuf.find(m_szToReplace[i]);
        if(spot >= 0)
        {
            string tmpstring = inBuf.substr(0,spot);
            tmpstring += m_szReplacement[i];
            tmpstring += inBuf.substr(spot+m_szToReplace[i].length(), inBuf.length());
            inBuf = tmpstring;
        }
*/

在检索行之前一切正常,我不确定如何去做(比较字符串)?

0 个答案:

没有答案