在char数组(流)c ++中查找和替换字符串的函数

时间:2013-08-26 05:39:10

标签: c++ arrays stream

我正在尝试找到一种方法来查找在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
}

我通常不会这么慢:/任何想法?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

你需要两个 for循环,一个在另一个里面。外部for循环一次遍历Memory字符串一个字符。内循环开始在外循环中找到你所在位置的FindWord

这是一个经典案例,您需要将问题分解为更小的步骤。你正在尝试的东西可能有点过于复杂,无法一次性完成。

尝试以下策略

1)将一些代码写入查找另一个字符串中给定位置的字符串,这将是内部循环。

2)将步骤1中的代码放入另一个循环(外循环)中,该循环遍历您正在搜索的字符串中的每个位置。

3)现在你可以在另一个字符串中找到所有出现的字符串,添加替换逻辑。