混合cin>>和getline() - C ++

时间:2015-10-15 09:49:35

标签: c++ cin getline

我告诉我,除非必要,否则我应该只使用我的代码中的任何一个,cin或getline。

Cin我被告知会产生异常错误等(不检查输入类型等)

我理解getline()对字符串和字符更灵活,但数字类型如何?我的意思是,我可以将getline字符串解析为数值,但是不是更安全的路线吗?问题是,我应该采用哪种方法进行字符串和数字输入?

int inputReturn(int x);

int defaultValue = 0;

int main()
{

  //Getting numerical input w/getline()
  string input = "";

  while(true)
   {
    cout << "Enter a value: ";
    getline(cin, input);

    stringstream myStream(input);
    system("CLS");

    if(myStream >> defaultValue)
      {
        system("CLS");
        break;
      }
    cout << "Invalid input. Try again!" << endl << endl;

   }

    inputReturn(input); //Converted to numeric value, but still type of string (Error)
    system("CLS");

return 0;
}

int inputReturn(int x)
{
  return x*2;
}

在这个例子中,我将字符串输入解析为数值,然后使用该值作为int的参数,并将字符串的错误获取为int。

所以,问题 - 我应该为这些数据类型使用什么,还是可以同时使用这两种数据类型?

我希望你们理解我的质疑。

1 个答案:

答案 0 :(得分:0)

getline()可以用于数值,但不能用于整数或双精度。 就您而言,可以使用。

还记得#include <string>