我需要从字符串中获取所有数字(double)并将它们写入数组。
示例
字符串:blabla2bla 123,12 bla bla 99 bla bla 3,1415bla bla
数组: [2] [123,12] [99] [3,1415]
我正在尝试使用 strtod ,但不太明白它是如何工作的。
double d;
int leng;
string v;
char *end=(char*)s.c_str();
size_t i=0,k=0;
char buf[20];
while(1)
{
d=strtod(s.c_str(),&end);
cout<<d<<endl;
if(d==NULL) break;
sprintf(buf,"%f",d);
v=(const char*)buf;
leng=v.length();
k=s.find(v,i)+1;
s.erase(k,leng);
}
答案 0 :(得分:0)
如果您事先知道输入格式,可以使用sscanf。
答案 1 :(得分:0)
如果输入未知(与ksfone的回答假设相反),我认为最简单的方法是使用isdigit
的组合一次处理每个字符,并在数字序列后检查逗号。然后可以在找到数字时将数字放入数组中。
答案 2 :(得分:0)
这是一种方法(未经测试,但应该有效)
想法是阅读内容,当它们不是正确的数据类型时,只需使用它们并继续阅读:
vector<double> l;
// loop will end wh1en stream is exhausted
while (cin) {
double x;
// while we read a double, add it to our list
while (cin >> x) {
l.push_back(x);
}
// entered a fail state
cin.clear();
// need to at least read a character
cin.get();
}