在java中,如果我想创造出能同时接收双打和字符串作为适当的输入一些应用程序,我可能会做到以下几点:C++字符串来解析异常?
String input = getInput();//
try {
double foo = Double.valueOf(input);
//Do stuff with foo here
} catch (NumberFormatException e) {
//Do other validation with input
}
你怎么会去这样做,在C++? atof()
对于无效输入返回0.0,但您将如何区分“0.0”的有效双精度?另外,本项目中我只能包括<iostream>
,<string>
,<cstdlib>
和<cassert>
。我假设我需要以某种方式使用cin
,但在cin
未能将某些字符串解析为双精度后,如何获取原始输入?
编辑:我大概可以使用以下,但正如我之前说的,我不能对这个分配导入<sstream>
出于某种原因
string input;
getline(cin, input);
double x;
istringstream foo(input);
foo >> x
if(cin){
//do manipulations with x
}
else{
//since it's not a number, check if input is a valid command etc..
}
如果没有简单的方法,那就用硬性的方法...如果'atof'返回0,手动检查字符串是否真的是一个字符串。 – smerlin 2010-09-04 00:56:51