【发布时间】:2017-06-06 10:43:24
【问题描述】:
我正在处理 C++ 中的动态数组。帮助使用以下代码。
我正在尝试一个一个地读取字符并制作 C 字符串。如果数组大小不够,我增加它。但是函数 increaseArray 会出错并返回一个包含其他字符的字符串。我错了什么?
void increaseArray(char* str, int &size){
char* newStr = new char[size * 2];
for (int i = 0; i < size; i++){
newStr[i] = str[i];
}
size *= 2;
delete[] str;
str = newStr;
}
char* getline()
{
int size = 8;
char* str = new char[size];
char c;
int index = 0;
while (c = getchar()) {
if (index == size) increaseArray(str, size);
if (c == '\n') {
str[index] = '\0';
break;
};
str[index] = c;
index++;
}
return str;
}
【问题讨论】:
-
这个“str = newStr;”将局部变量 str 设置为 newStr。该局部变量立即被丢弃。你想要一个指向指针或引用。
-
你为什么不用
std::string甚至std::vector<char>?? -
“我正在尝试逐个读取字符并制作C字符串。如果数组大小不够,我会增加它”字面意思是@987654324 @是为了。您为什么不使用它并省去麻烦呢?您的代码无法通过我团队的审核。
标签: c++ arrays pointers dynamic char