C++ 如何使用stringstream将字符串同时转换为int和double
如何使用stringstream将字符串转换为int和double 输入将是四位数字,后跟一个句点,后跟另外四位数字(##########),我需要将前四位数字提取成一个整数,然后整个过程需要是一个双精度的,但我不确定从这里该怎么做C++ 如何使用stringstream将字符串同时转换为int和double,c++,stringstream,C++,Stringstream,如何使用stringstream将字符串转换为int和double 输入将是四位数字,后跟一个句点,后跟另外四位数字(##########),我需要将前四位数字提取成一个整数,然后整个过程需要是一个双精度的,但我不确定从这里该怎么做 string s; cin >> s; stringstream ss; ss << s; int num1; // needs to be int ss.str(s); ss >
string s;
cin >> s;
stringstream ss;
ss << s;
int num1; // needs to be int
ss.str(s);
ss >> num1;
ss.clear();
ss << s;
double num2; // needs to be a double
ss >> num2;
字符串s;
cin>>s;
细流ss;
ss>num1;
ss.clear();
ss>num2;
例如,假设输入中有
1234.5678
。在读取发生后,我希望在num1
中有1234
,在num2
中有1234.5678
,假设数字只有4位且不是很大,则不需要对其进行两次解析,一个double应该能够精确地保持整数部分,因此您可以在之后将其截断为int
stringstream ss("1234.5678");
double foo;
ss >> foo;
int bar = static_cast<int>(foo);
stringstream ss(“1234.5678”);
双福;
富;
int bar=静态施法(foo);
不需要对其进行两次解析,假设数字仅为4位且不是很大,则双精度应该能够精确保留整数部分,因此您可以在之后将其截断为整数
stringstream ss("1234.5678");
double foo;
ss >> foo;
int bar = static_cast<int>(foo);
stringstream ss(“1234.5678”);
双福;
富;
int bar=静态施法(foo);
如果num2
需要是double
,为什么要将其定义为int
?与主题无关:ss.str(s)
有效地重复ss,因此,假设输入中有1234.5678
,并且有intx;双y代码>变量。魔法发生后,你想在x
中得到什么,在y
中得到什么?我的意思是,确切地说,x和y的值是多少?太好了。因此,你应该先忽略“x”,而不是把整个读入double y代码>,然后你应该ceil()这个y值,这样你就可以得到它的整数部分-你可以使用ceil()数学函数,或者只写castintx=(int)y
如果num2
需要是double
,为什么要将其定义为int
?与主题无关:ss.str(s)
有效地重复ss,因此,假设输入中有1234.5678
,并且有intx;双y代码>变量。魔法发生后,你想在x
中得到什么,在y
中得到什么?我的意思是,确切地说,x和y的值是多少?太好了。因此,你应该先忽略“x”,而不是把整个读入double y代码>,然后你应该ceil()这个y值,这样你就可以得到它的整数部分-你可以使用ceil()数学函数,或者只写castintx=(int)y代码>或完全跳过stringstream
并使用std::stod
,正如R Sahu所建议的那样。@Fredrarson这将是一个很好的解决方案,但不是对“如何使用stringstream将字符串转换为int和double?”问题的回答,或完全跳过stringstream
并使用std::stod
,正如R Sahu所建议的那样。@Fredrarson这是一个很好的解决方案,但不是对“如何使用stringstream将字符串转换为int和double”问题的回答