【发布时间】:2017-03-07 22:14:31
【问题描述】:
如何使用 stringstream 将字符串转换为 int 和 double?
输入将是四位数字,后跟一个句点,然后是另外四位数字 (####.####),我需要将前四位数字提取到一个 int 中,然后整个事情需要做个替身,但我不知道从这里去哪里
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;
例如,假设我们在输入中有1234.5678。阅读完成后,我希望num1 中有1234,num2 中有1234.5678。
【问题讨论】:
-
如果
num2必须是double,为什么要将它定义为int? -
离题:
ss.str(s);有效地重复了ss << s;。 -
所以,假设您在输入中有
1234.5678,并且您有int x; double y;变量。魔术发生后,你想在x中拥有什么,你想在y中拥有什么?我的意思是,确切地说,x 和 y 的值是多少? -
太棒了。因此你应该首先忽略'x',而是将整个读入
double y;,然后你应该ceil()那个y值,这样你就可以得到它的整数部分——你可以使用ceil()数学函数,或者只是写投int x = (int)y;
标签: c++ stringstream