ann*_*arp 0 c c++ char strcmp dynamic-memory-allocation
假设我正在尝试执行以下操作(这是我想要实现的一个子问题):
int compareFirstWord(char* sentence, char* compareWord){
char* temp; int i=-1;
while(*(sentence+(++i))!=' ') { *(temp+i) = *(sentence+i); }
return strcmp(temp, compareWord); }
Run Code Online (Sandbox Code Playgroud)
当我跑步时compareFirstWord("Hi There", "Hi");,我在复制线上遇到错误.它说我正在使用temp未初始化.然后我使用char* temp = new char[];在这种情况下,函数返回1而不是0.当我调试时,我看到temp以一些长度为16的随机字符开始并strcmp因此而失败.
有没有办法声明一个空的char*并动态增加大小只是我需要的长度和内容?有什么办法让这个功能起作用?我不想用std::string.
在C中,您可以:
int compareFirstWord(const char* sentence, const char* compareWord)
{
while (*compareWord != '\0' && *sentence == *compareWord) {
++sentence;
++compareWord;
}
if (*compareWord == '\0' && (*sentence == '\0' || *sentence == ' ')) {
return 0;
}
return *sentence < *compareWord ? -1 : 1;
}
Run Code Online (Sandbox Code Playgroud)
有std::string,你只需:
int compareFirstWord(const std::string& sentence, const std::string& compareWord)
{
return sentence.compare(0, sentence.find(" "), compareWord);
}
Run Code Online (Sandbox Code Playgroud)