【发布时间】:2024-04-22 19:30:02
【问题描述】:
我正在尝试分隔一个数字列表,例如:34,45,12.3,100,34.6,50
只有在没有这样的小数时我才能做到:
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
int main()
{
std::string str = "34,45,12.3,100,34.6,50";
std::vector<int> vect;
std::stringstream ss(str);
int i;
while (ss >> i)
{
vect.push_back(i);
if (ss.peek() == ',')
ss.ignore();
}
for (i=0; i< vect.size(); i++)
std::cout << vect.at(i)<<std::endl;
}
这里的问题是小数。以上将产生:
34 45 12 3 100 34 6 50
虽然它应该产生:
34 45 12.3 100 34.6 50
基本上,当上面的代码看到一个点'.' 时,它的行为就好像它是一个逗号。
有什么想法吗?
【问题讨论】:
-
你有一个
int的整数向量,因此它不能包含浮点数;它们被截断为整数部分。更改您的向量,使其元素为浮点数。 -
i应该是float。 -
这是*.com/questions/1120140/… 的副本(但出于某种原因,我认为在此处将其标记为这样并关闭它是正确的)。
-
你应该了解整数和浮点数的区别。提示:整数没有小数部分,所以没有小数点。
-
不要重复使用变量!声明两个独立的。 (例如,您在 for 循环中重用
i。)