1

char 配列内の文字列を検索し、それが発生するたびに別の文字列に置き換える方法を見つける方法を見つけようとしています。私は何をすべきかについてかなりの考えを持っていますが、ストリームの背後にある構文全体が時々私を混乱させます。とにかく、これまでの私のコード(そしてそれほど多くはありません)は次のとおりです。

string FindWord = "the";
string ReplaceWord = "can";

int i = 0;
int SizeWord = FindWord.length();
int SizeReplace = ReplaceWord.length();

while (   Memory[i] != '\0')
{
         //now i know I can probably use a for loop and 
         //then if and else statements but im just not quite sure
    i++; //and then increment my position
}

私は通常、これほど遅くはありません:/ 何かアイデアはありますか?

4

2 に答える 2

3

に変換した後、文字配列をいじってみたいと思いますstd::string

以下は従うのが簡単です:-

#include<iostream>
#include<string>

int main ()
{

char memory[ ] = "This is the char array"; 
 //{'O','r',' ','m','a','y',' ','b','e',' ','t','h','i','s','\0'};

std::string s(memory);

std::string FindWord = "the";
std::string ReplaceWord = "can";


std::size_t index;
    while ((index = s.find(FindWord)) != std::string::npos)
        s.replace(index, FindWord.length(), ReplaceWord);

std::cout<<s;
return 0;
}
于 2013-08-26T05:54:08.567 に答える
0

2 つの for ループが必要で、1 つはもう 1 つの内部にあります。Memory外側の for ループは、一度に 1 文字ずつ文字列を通過します。内側のループは、外側のループで到達した位置で を探し始めFindWordます。

これは、問題を小さなステップに分割する必要がある典型的なケースです。あなたがしようとしていることは、一度に行うには少し複雑すぎるでしょう。

次の戦略を試してください

1)別の文字列の特定の位置にある文字列を検索するコードを記述します。これが内側のループになります。

2) 手順 1 のコードを、検索対象の文字列の各位置を通過する別のループ (外側のループ) に入れます。

3) これで、ある文字列が別の文字列に出現するすべての箇所を見つけることができます。置換ロジックを追加します。

于 2013-08-26T05:48:24.933 に答える