gpt4 book ai didi

c++ - 我的char数组数组只保存最后输入的行

转载 作者:行者123 更新时间:2023-11-28 03:06:47 25 4
gpt4 key购买 nike

我的字符数组只存储最后输入的字符串。例如,如果我输入 A、B、C、D 和 E,它会打印 5 次 E。

string line = " ";
char** arr = new char*[5];

int i = 0;

for(i = 0; i < 5; ++i)
arr[i] = new char[10];



for(i = 0; i < 5; i++){
getline(cin, line);
arr[i] = (char*)line.c_str();
}

for(i = 0; i < 5; i++){
cout<< arr[i] << endl;
}

最佳答案

问题是你每次都将 line 的地址(不完全)分配给 arr[i],这永远不会改变。它导致 arr 的所有条目都指向同一位置。

你可以做到这一点..

for(i = 0; i < 5; i++){
getline(cin, line);

strncpy(arr[i], line.c_str(), 10);
}

更新:如评论中所述,您实际上是在分配 line 内部表示的地址。

关于c++ - 我的char数组数组只保存最后输入的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472467/

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