C++ 如何使用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 >

如何使用stringstream将字符串转换为int和double

输入将是四位数字,后跟一个句点,后跟另外四位数字(##########),我需要将前四位数字提取成一个整数,然后整个过程需要是一个双精度的,但我不确定从这里该怎么做

    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()数学函数,或者只写cast
intx=(int)y
如果
num2
需要是
double
,为什么要将其定义为
int
?与主题无关:
ss.str(s)
有效地重复
ss,因此,假设输入中有
1234.5678
,并且有
intx;双y变量。魔法发生后,你想在
x
中得到什么,在
y
中得到什么?我的意思是,确切地说,x和y的值是多少?太好了。因此,你应该先忽略“x”,而不是把整个读入
double y,然后你应该ceil()这个y值,这样你就可以得到它的整数部分-你可以使用ceil()数学函数,或者只写cast
intx=(int)y或完全跳过
stringstream
并使用
std::stod
,正如R Sahu所建议的那样。@Fredrarson这将是一个很好的解决方案,但不是对“如何使用stringstream将字符串转换为int和double?”问题的回答,或完全跳过
stringstream
并使用
std::stod
,正如R Sahu所建议的那样。@Fredrarson这是一个很好的解决方案,但不是对“如何使用stringstream将字符串转换为int和double”问题的回答