crane_in_sky 2024-11-20 20:19 采纳率: 87.5%
浏览 6
已结题

c++vector加入错误

代码:

                        system("cls");
            string spm;
            long long jjg;
            printf("请输入商品名:");
            cin >> spm;
            printf("请输入价格:");
            cin >> jjg;
            sj.jg.push_back(jjg);
            sj.sp.push_back(spm);
            sj.sur.push_back(mmm.mz[zrzh]);
            
            Save();
            system("cls");
            printf("已成功!\n");
            system("pause");
            system("cls");
            return 1;

代码push_back后是一堆乱码。求修改

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从您提供的代码片段来看,您正在尝试使用 std::vector 来存储字符串和长整型数据,并在向 vector 中添加数据后调用 Save() 函数保存数据。您提到在 push_back 后出现乱码的问题,这可能是由于以下几个原因造成的:

    1. 输入格式问题:如果您输入的字符串中包含空格或特殊字符,并且在读取时使用了 cin >>,那么它可能只读取了空格之前的部分字符串,剩下的部分仍然留在输入流中。在后续操作中可能导致乱码问题。您应该使用 cin.getline()cin >> spm.getline() 来读取包含空格的整行字符串。
    2. 编码问题:如果您正在处理文本文件,可能存在字符编码不匹配的问题。例如,如果程序以UTF-8编码读取数据,但保存的文件是以其他编码格式(如GBK)保存的,可能会出现乱码。确保您的程序使用的编码与文件一致。
    3. 内存问题:如果 vector 中的数据已经被其他地方的代码修改或覆盖,那么在使用之前可能会出现乱码。确保在使用之前数据的正确性。

    针对上述问题,您可以尝试以下修改:

    system("cls"); // 清屏命令,取决于您的操作系统
    std::string spm; // 定义字符串变量spm
    long long jjg; // 定义长整型变量jjg用于存储价格
    
    // 使用getline读取包含空格的整行字符串
    std::getline(std::cin, spm); // 修改这里,使用getline读取整行字符串
    printf("请输入商品名:");
    std::cin >> jjg; // 这里没有需要改动的地方
    sj.jg.push_back(jjg); // 添加价格到vector中
    sj.sp.push_back(spm); // 添加商品名到vector中
    sj.sur.push_back(mmm.mz[zrzh]); // 添加其他数据到vector中(假设mmm和zrzh已定义)
    
    Save(); // 保存数据到文件或其他地方(假设Save函数已定义)
    system("cls"); // 再次清屏
    printf("已成功!\n"); // 输出成功信息
    system("pause"); // 暂停程序执行(取决于您的操作系统)
    system("cls"); // 再次清屏(可选)
    return 1; // 返回特定值(根据您的需求决定)
    

    注意:请确保所有变量和函数(如 sj, mmm, zrzh, Save() 等)都已经正确定义和使用。此外,还要确保您使用的输入数据与预期的数据格式一致。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月20日