0

次のプログラムを作成しようとしています。

  • 1.txt を開きます (検索する必要がある文字列が含まれています)。
  • それらを新しい文字列配列に読み込み、要素を分離します
  • 2.txt を開きます (これには、置換する文字列を検索するドキュメントが含まれています)
  • 行の読み取り -> 入力文字列の行リテラルを 1.txt で見つかったすべての要素と比較します
  • 一致する場合は、問題のある文字列を置き換え、その行を char 配列に追加します - ただし、一致する場合は、同じ行に別の問題のある文字列が存在する可能性があります。どうすれば補償できますか?
  • それ以外の場合は、行を char 配列 () に追加します
  • 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;
        }
*/

行を取得するまでは問題なく動作しますが、行を取得する方法がわかりません (文字列の比較)?

4

0 に答える 0