字符串?

时间:2010-07-14 22:35:23

标签: c++

如果我使用字符串或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更有意义,那么它的等效字符代码是什么?

3 个答案:

答案 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”){ //做点别的 } 否则{}