C++ 混合cin>&燃气轮机;和getline()-C++;

C++ 混合cin>&燃气轮机;和getline()-C++;,c++,cin,getline,C++,Cin,Getline,我被告知,除非有必要,否则我应该在代码中只使用cin或getline这两个选项中的任何一个 我被告知Cin会产生异常错误等(不检查输入类型等) 我知道getline()对于字符串和字符更灵活,但是对于数字类型呢?我的意思是,我可以将getline字符串解析为数值,但是没有更安全的方法吗?问题是,对于字符串和数字输入,我应该采用哪种方法 int inputReturn(int x); int defaultValue = 0; int main() { //Getting numeric

我被告知,除非有必要,否则我应该在代码中只使用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;
}
intinputreturn(intx);
int defaultValue=0;
int main()
{
//正在使用getline()获取数字输入
字符串输入=”;
while(true)
{
cout>defaultValue)
{
系统(“CLS”);
打破
}
cout
getline()
可以用于数值,但不能用于整数或双精度。 在您的情况下,可以使用


另外,请记住
#包括

您可以使用
std::istringstream
字符串转换为数值。错误将通过写入
inputReturn(默认值)来修复
BTW.您可以同时使用这两种方法..虽然
>
运算符读取您的值,但会将值一直读取到下一个空格或EndOfLine或eof或目标的sizeof/容量。并且在使用
cin
和getline时不会检查yes类型..getline的区别在于它总是返回一个字符串。如果您保证输入格式正确(数字在您期望的位置),因此
cin
不会有问题。但根据您对问题的措辞,情况并非如此。因此,您必须阅读字符串,或者使用更好的解析器。
inputReturn()
Mubashir Hanif和Les的+1,感谢您的评论(这更像是答案)。完全解决了我的问题。此外,由于转换过程中出现了错误,您应该使用强制转换,这种类型的转换效果更好