C++ 混合cin>&燃气轮机;和getline()-C++;
我被告知,除非有必要,否则我应该在代码中只使用cin或getline这两个选项中的任何一个 我被告知Cin会产生异常错误等(不检查输入类型等) 我知道getline()对于字符串和字符更灵活,但是对于数字类型呢?我的意思是,我可以将getline字符串解析为数值,但是没有更安全的方法吗?问题是,对于字符串和数字输入,我应该采用哪种方法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
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”);
打破
}
coutgetline()
可以用于数值,但不能用于整数或双精度。
在您的情况下,可以使用
另外,请记住#包括您可以使用std::istringstream
将字符串转换为数值。错误将通过写入inputReturn(默认值)来修复
BTW.您可以同时使用这两种方法..虽然>
运算符读取您的值,但会将值一直读取到下一个空格或EndOfLine或eof或目标的sizeof/容量。并且在使用cin
和getline时不会检查yes类型..getline的区别在于它总是返回一个字符串。如果您保证输入格式正确(数字在您期望的位置),因此cin
不会有问题。但根据您对问题的措辞,情况并非如此。因此,您必须阅读字符串,或者使用更好的解析器。inputReturn()
Mubashir Hanif和Les的+1,感谢您的评论(这更像是答案)。完全解决了我的问题。此外,由于转换过程中出现了错误,您应该使用强制转换,这种类型的转换效果更好