如果用户点击Enter而不提供输入,则无法找出产生错误的方法

时间:2016-10-11 22:47:00

标签: c++ xcode error-handling getline

好吧所以我必须制作一个计算月度数据账单的程序。 我唯一坚持的是,如果用户点击输入而不输入任何内容,我就无法提出错误。我尝试使用get line(),但我似乎无法让它读取char。另外,我怎么能够产生错误,因为我认为我做错了什么。

我也一直没有获得与“getline'

”通话的匹配功能
#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

int main()
{
// State the different plans
cout << "A - $29.99 per month with 5000 megabytes.\n";
cout << "    $0.05 per additional megabyte, but only\n";
cout << "    $0.03 per additional megabyte if 50% or\n";
cout << "    more of the data was used on weekends\n";
cout << "B - $39.99 per month with 7500 megabytes.\n";
cout << "    $0.01 per additional megabyte\n";
cout << "C - $49.99 per month for unlimited megabytes.\n";

// Ask what plan the customer bought
cout << "Enter A, B, or C to chose the plan the user has purchased: ";
char input;

getline(cin, input);

// Capitalize the input
input = toupper(input);


// Ignore anything after the first letter
cin.ignore(100, '\n');

2 个答案:

答案 0 :(得分:1)

使用std::getline()的最简单方法是将第二个参数设为std::string

std::string input;

getline(cin, input);

if (input.size() == 0)
{
    // Nothing was typed in before hitting Enter.
}

这比使用operator>>要简单得多,然后必须处理ignore(),以及其他令人头疼的问题......

答案 1 :(得分:0)

我以下列方式使用了cin.getline:

char str [64]; cin.getline(str,sizeof(str));

str将捕获所有输入的字符,直到返回键。如果用户只是点击返回,str [0]将被设置为0,使str为0长度字符串,strlen(str)将为0.