好吧所以我必须制作一个计算月度数据账单的程序。 我唯一坚持的是,如果用户点击输入而不输入任何内容,我就无法提出错误。我尝试使用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');
答案 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.