gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:28 27 4
gpt4 key购买 nike

假设我正在尝试执行以下操作(这是我正在尝试实现的子问题):

int compareFirstWord(char* sentence, char* compareWord){
char* temp; int i=-1;
while(*(sentence+(++i))!=' ') { *(temp+i) = *(sentence+i); }
return strcmp(temp, compareWord); }

当我运行 compareFirstWord("Hi There", "Hi"); 时,复制行出现错误。它说我正在使用未初始化的临时文件。然后我使用 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;
}

使用 std::string,您只需:

int compareFirstWord(const std::string& sentence, const std::string& compareWord)
{
return sentence.compare(0, sentence.find(" "), compareWord);
}

关于c++ - 如何声明一个空的 char* 并动态增加大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com