gpt4 book ai didi

C++ cin.ignore 导致段错误?

转载 作者:行者123 更新时间:2023-11-30 03:01:49 24 4
gpt4 key购买 nike

int client::add_user(item & item_in)
{
char temp[ASIZE];
cout << "\n\nEnter the name of your item: ";
cin.get(temp, 100, '\n');
cin.ignore(100, '\n');
get_upper(temp);
item_in.name = temp;

cout << "\n\nEnter in effect one: ";
cin.get(temp, 100, '\n');
cin.ignore(100, '\n');
get_upper(temp);
item_in.effect1 = temp;

cout << "\n\nEnter in effect two: ";
cin.get(temp, 100, '\n');
cin.ignore(100, '\n');
get_upper(temp);
item_in.effect2 = temp;

cout << "\n\nEnter in effect three: ";
cin.get(temp, 100, '\n');
cin.ignore(100, '\n');
get_upper(temp);
item_in.effect3 = temp;

cout << "\n\nEnter in effect four: ";
cin.get(temp, 100, '\n');

cout << "this";
cin.ignore(100, '\n');
cout << "that";

get_upper(temp);
item_in.effect4 = temp;

...明白我确定这段代码有很多错误,我遇到的问题是前四个 block 运行得很好,但是当我使用 g++ 编译这段代码并运行它时,显示“this”,然后是段错误没有“那个”。有什么想法吗?

最佳答案

根据您的另一个问题,参数 item_in 似乎是一个包含多个 char * 字段的结构。存在一个严重的问题,因为数组 temp 仅在该函数运行期间存在。您正在将临时数组的地址分配给 item_in 中的指针。当函数返回时,数组超出范围并且它的内存不再是你的。

您可以通过为指针分配内存并复制数据来解决此问题,但最佳解决方案是使用 C++ 标准库中的 std::string。它处理资源管理和操作,如您所期望的分配工作。

关于C++ cin.ignore 导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749836/

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