我有一个程序来查找和替换C ++中的单词。
#include<iostream.h>
#include<string.h>
int main()
{
char string[80], replace[80], found[80], str1[80], str2[80], str3[80];
cout << "\nEnter string(max 3 words)\n";
cin.getline(string , 80);
cout << "\nEnter the word to be Found\n";
cin.getline(found , 80);
cout << "\nReplace with \n";
cin.getline(replace , 80);
for(int i = 0; string[i] != '\0'; i++)
{
str1[i] = string[i];
if(str1[i] == " ")
break;
}
for(int j = i; string[j] != '\0'; j++)
{
str2[j] = string[j];
if(str2[j] == " ")
break;
}
for(int k = j; string[k] != '\0'; k++)
{
str3[k] = string[k];
if(str3[k] == " ")
break;
}
cout << str1;
cout << str2;
cout << str3;
}
为此,我将每个单词存储为不同的字符串,但它没有帮助。
应该采取哪些措施来改善这一点?
答案 0 :(得分:1)
在您当前的代码中,您需要:
1
if(str1[i] == " ")
应该是
if(str1[i] == ' ')
2,3 而不是
for(int j = i;string[j] != '\0' ; j++)
DO
for (int j = 0, i = (i + 1); string[i] != '\0'; j++,i++)
分配变为
str2 [j] = string [i];
对第3个循环执行相同操作(在j前面没有int或使用另一个字母)。为了保持一致性,您可以将从0开始的j变量添加到第一个循环。
4 在每个循环之后为空终止符添加赋值语句(每个c-string最后需要'\ 0'才能正常工作):
str1[i] = '\0';
str2[j] = '\0';
str3[j] = '\0';
答案 1 :(得分:1)
你的代码有太多逻辑和&amp;语法错误。
以下是修改后的代码,它将接受所需的字符串并打印预期的输出:
#include<iostream>
#include<string.h>
using namespace std;
void strreplace(string orgString, const string search, const string replace )
{
for( size_t pos = 0; ; pos += replace.length() )
{
pos = orgString.find( search, pos );
if( pos == string::npos )
break;
orgString.erase( pos, search.length() );
orgString.insert( pos, replace);
cout<<"String after replacement:"<<orgString<<endl;
}
}
int main()
{
char string[80], replace[80], found[80], str1[80], str2[80], str3[80] ;
cout << "\nEnter string(max 3 words)\n" ;
cin.getline(string , 80);
cout <<"\nEnter the word to be Found\n";
cin.getline(found , 80);
cout <<"\nReplace with \n" ;
cin.getline(replace , 80);
strreplace(string, found, replace);
return 0;
}
我希望这会对你有所帮助。
答案 2 :(得分:0)
std :: string不包含此类函数,您可以使用算法标题中的独立替换函数。
#include <algorithm>
#include <string>
string stringReplace(std::string toSearch, std::string toReplace, std::string originalString) {
std::replace( originalString.begin(), originalString.end(), 'toSearch', 'toReplace'); // replace all 'toSearch' to 'toReplace'
return originalString;
}