如果我使用字符串或char作为简单的输入函数是否重要? (又名y / n)
这就是我现在正在使用的内容:
using namespace std;
string somestr;
getline(cin,somestr);
if(somestr.empty())
{ //do something }
else if (somestr == "y"){
//do something else
}
else{}
如果对用户char更有意义,那么它的等效字符代码是什么?
答案 0 :(得分:5)
是的,这很重要,因为std::string
无法与使用char
的{{1}}进行比较。您可以将其与字符串文字进行比较:
==
或者您可以测试if (somestr == "y")
的初始元素:
std::string
在后一种情况下,您可能还需要检查长度,否则您会接受“游艇”和“黄色”等输入。与包含预期文本的字符串文字相比,对于大多数用例来说可能是更好的选择。
答案 1 :(得分:2)
我认为James McNellis给出了为什么要使用这两种情况的理由。就个人而言,如果你问的是“是/否”问题,我会发现单个角色更容易,因为它可以最大限度地减少你必须处理的不同场景的数量。
以下是一些示例代码,您可以使用这些代码通过单个字符读取用户的答案:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
//keep looping until the user enters something valid
while(true)
{
char answer;
cout << "Does this sound good (y/n)? ";
cin >> answer;
if(answer == 'y' || answer == 'Y')
{
//user entered yes, do some stuff and leave the loop
cout << "You answered yes!" << endl;
break;
}
else if(answer == 'n' || answer == 'N')
{
//user entered no, do some stuff and leave the loop
cout << "You answered no!" << endl;
break;
}
else
{
cout << "You did not enter a valid answer. Please try again." << endl;
//if we got bad input (not 'y'/'Y' or 'n'/'N'), wipe cin and try again
cin.clear();
cin.ignore(numeric_limits<int>::max(),'\n');
}
}
}
如果你计划阅读不止一个字符的答案,那么我认为你可能对getline
很好,并按照这种方式进行推理。
答案 2 :(得分:0)
最好使用char,因为你只需要存储一个字符
使用namespace std;
char chr;
函数getline(CIN,CHR);
if(chr == null) { //做一点事 } 否则if(chr ==“y”){ //做点别的 } 否则{}