yaodingqingshang 2023-09-16 13:44 采纳率: 0%
浏览 6

请问专家这里讲的“另一种方法是读取到下一个空白字符”这怎么编写代码啊?


#include<iostream>
const int Max = 5;
int main()
{
    using namespace std;
    //get data
    int golf[Max];
    cout << "Please enter your golf scores.\n";
    cout << "You must enter " << Max << " rounds.\n";
    int i;
    for (i = 0; i < Max; i++)
    {
        cout << "round #" << i + 1 << ": ";
        while (!(cin >> golf[i])) {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Please enter a number: ";
        }
    }
    //calculate average
    double total = 0.0;
    for (i = 0; i < Max; i++)
        total += golf[i];
    //report results
    cout << total / Max << " = average score " << Max << " rounds\n";
    system("pause");
    return 0;
}

如果用户输入88,则cin表达式将为true,因此将一个值放到数组中;而表达式!(cin>>golf[i])为false,因此内部循环结束。然而,如果用户输入must i?,则cin表达式将为false,因此不会将任何值放到数组中;而表达式!(cin>>golf[i])将为true,因此进入内部的while循环。该循环的第一条语句使用clear()来重置输入,如果省略这条语句,程序将拒绝读取输入;接下来,程序在while循环中使用cin.get()来读取行尾之前的所有输入,从而删除这一行中的错误输入。另一种方法是读取到下一个空白字符,这样将每次删除一个单词,而不是一次删除整行。最后程序告诉用户,应输入一个数字。

请问专家这里讲的“另一种方法是读取到下一个空白字符”这怎么编写代码啊?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-16 16:40
    关注

    【以下回答由 GPT 生成】

    在C++中,可以使用以下方法来读取到下一个空白字符:

    while (cin.peek() != ' ')
        cin.ignore();
    

    在每次循环中,cin.peek()函数用于查看输入流中下一个字符而不将其取走。如果下一个字符不是空白字符,则调用cin.ignore()函数来忽略掉该字符。这样,循环会一直执行,直到读取到下一个空白字符位置为止。

    需要注意的是,cin.peek()函数可以保留输入流中的空白字符,所以不需要再使用cin.ignore()函数来忽略掉空白字符。

    以下是将该方法插入到你的代码中的示例:

    #include<iostream>
    const int Max = 5;
    int main()
    {
        using namespace std;
        //获取数据
        int golf[Max];
        cout << "请输入您的高尔夫成绩。\n";
        cout << "您必须输入 " << Max << " 轮。\n";
        int i;
        for (i = 0; i < Max; i++)
        {
            cout << "第 " << i + 1 << " 轮: ";
            while (!(cin >> golf[i])) {
                cin.clear();
                while (cin.get() != ' ')
                    continue;
                cout << "请输入一个数字: ";
            }
        }
        //计算平均值
        double total = 0.0;
        for (i = 0; i < Max; i++)
            total += golf[i];
        //报告结果
        cout << total / Max << " = 平均分 " << Max << " 轮\n";
        system("pause");
        return 0;
    }
    

    请注意,这种方法仅适用于读取到下一个空白字符的情况。如果你需要读取到下一个特定字符之类的需求,可以将上述代码中的' '替换为所需的字符。

    希望这能帮助到你!如果还有其他问题,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月16日

悬赏问题

  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)