【发布时间】:2026-01-15 21:30:02
【问题描述】:
假设我正在尝试执行以下操作(这是我想要实现的子问题):
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。
【问题讨论】:
-
使用
std::string。 -
然后使用
std::vector。 -
你为什么不想使用
std::string?如果你真的不能足够公平地使用它,但是如果你可以使用它并且只是不想,我认为你应该,你可以添加一个字符带有str.push_back(a_char)的字符串您可以为带有str.reserve(size)的字符串保留空间并使用str.capacity()检查分配的空间,然后str.shrink_to_fit()减少字符串容量以适应实际的str.size(),可以使用@ 设置/重置987654334@,如果您需要char *等效的字符串,您可以调用str.c_str()并使用str.clear()清除字符串 -
感谢您非常清楚的解释!
标签: c++ c char dynamic-memory-allocation strcmp