我现在很困惑。最后,我想将sentence
发送给replaceSubstring
,然后返回相同的句子,将“the”替换为“that”。我知道我应该使用指针,但我不知道究竟在哪里以及为什么。有什么建议吗?
我得到的错误是:
Ch12_08.cpp: In function ‘char replaceSubstring(char*, char*, char*)’:
Ch12_08.cpp:16: error: request for member ‘strstr’ in ‘sent’, which is of non-class type ‘char*’
Ch12_08.cpp:17: error: invalid conversion from ‘char*’ to ‘char’
Ch12_08.cpp:18: error: invalid conversion from ‘char*’ to ‘char’
Ch12_08.cpp: In function ‘int main()’:
Ch12_08.cpp:30: error: expected primary-expression before ‘]’ token
这是我正在使用的代码..
#include <iostream>
#include <cstring> // Needed for strstr to work
using namespace std;
char replaceSubstring(char sent[], char oldW[], char newW[]){
char *strPtr = NULL;
strPtr = &sent.strstr(sent, oldW);
*strPtr = newW;
return sent;
}
int main()
{
char sentence[35] = "the dog jumped over the fence";
char oldWord[5] = "the";
char newWord[6] = "that";
char newSentence[35] = {NULL};
wcout << "The original sentence is: " << sentence << endl;
newSentence[] = replaceSubstring(sentence, oldWord, newWord);
return 0;
}
提前致谢!
答案 0 :(得分:0)
错误消息告诉您确切的错误:strstr
不是char *
的成员函数。 char *
不是类类型。
相反,strstr
只是一个简单的函数。这对你来说可能更好:
strPtr = strstr(sent, oldW);
找到oldW
中strPtr
的位置后,您需要将newW
复制到oldW
。如果newW
和oldW
的长度相同,那应该不会很困难。如果它们的长度可能不同(就像你的例子中那样),那么你就可以为你做好工作了。
在任何情况下,strstr
之后的行都不会达到您想要的效果。您需要一个循环来复制字符或类似字符。
最后,你无法从函数中返回一个字符数组。如果希望函数填充该数组,则需要将newSentence
作为参数传递给函数。
我的一部分想知道为什么当std::string
使这个更好时,你甚至用C字符串来尝试这个...