如何声明一个空的char*并动态增加大小?

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.

Jar*_*d42 5

在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)