我正在尝试一个使用数组的短代码,当我调用我的函数WordReplace时,我基本上想要替换仇恨这个词,但是我继续打印相同的东西:
我不喜欢c ++ 我不喜欢c ++
我尝试了不同的东西,但我不确定是什么问题
#include <iostream>
#include <string>
using namespace std;
void WordReplace(string*x, int start, int end, string g, string w)
{
for (int z = start; z <= end; z++)
{
if (x[z] == g)
x[z] == w;
cout << x[z]<<" ";
}
}
int main()
{
string x[4] = {"I", "don't", "hate", "c++"};
for (int i = 0; i < 4; i++)
{
cout << x[i] << " ";
}
cout << endl;
WordReplace(x, 0, 3, "hate", "love");
cout << endl;
return 0;
}
答案 0 :(得分:5)
只需使用std::replace:
std::string x[] = {"I", "don't", "hate", "c++"};
std::replace( std::begin( x ), std::end( x ), "hate", "love" );
答案 1 :(得分:3)
你有c ++。使用适当的容器(例如std :: vector)。
#include <string>
#include <vector>
#include <iostream>
using namespace std;
void WordReplace(vector<string> &sentence, string search_string,
string replace_string) {
for (auto &word : sentence) {
if (word == search_string)
word = replace_string;
}
}
int main() {
vector<string> sentence{"I", "don't", "hate", "c++"};
for (const auto word : sentence)
cout << word << " ";
cout << endl;
WordReplace(sentence, "hate", "love");
for (const auto word : sentence)
cout << word << " ";
cout << endl;
return 0;
}
甚至更好,不要重新发明轮子
std::vector<std::string> x {"I", "don't", "hate", "c++"};
std::replace( x.begin(), x.end(), "hate", "love" );
答案 2 :(得分:1)
如果要为变量指定新值,则需要以下语法:
myVar = myValue;
这会将myVar的值更改为myValue。
这种结构:
myVar == myValue
是一个比较并被视为bool,因为它返回true(如果myVar等于myValue)和False(如果它们不相等)。构造不会改变myVar或myValue的值。
在您的情况下,您需要按照x[z] == w
替换x[z] = w
,如Igor建议