我想在运行中使用指针初始化一个char数组。这是用户提供输入不知道数组的大小。用户继续提供输入,直到返回被按下。条件是:
答案 0 :(得分:3)
假设有一个C问题,那么(未经测试)如何:
char *arr = malloc(10);
size_t size = 10, index = 0;
int ch;
while ((ch = getc(stdin)) != EOF && ch != '\n' && ch != '\r') {
if (index >= size) {
size *= 2;
arr = realloc(arr, size); /* XXX check it first. */
}
arr[index++] = ch;
}
arr[index] = 0;
如果它真的是一个C ++问题,那么std::getline
需要std::string
。
答案 1 :(得分:0)
std :: string有一个方法push_back
,std :: vector也能完成这项工作。如果你真的被迫使用动态数组和char指针,我建议你实现类似于vector中使用的重新分配策略 - 每次元素数量大于当前大小时,大小加倍。