C++:将字符串解析为双精度字符串的最佳方法

C++:将字符串解析为双精度字符串的最佳方法,c++,parsing,C++,Parsing,假设我有以下字符串: string str = "I 500.000 500.000 30000 30.000 60.000 20.000 20.0 60.0 ;" 以及以下变量: double x1; double x2; int x3; 我想解析上面的字符串,这样最后 x1 = 500.000 x2 = 500.000 x3 = 30000 进行这种解析的最佳方法是什么?如能提供代码片段,将不胜感激 谢谢 更新 好的,当我说“最好”时,我实际上是指“最容易”,比如“什么时候给你一个上面

假设我有以下字符串:

string str = "I 500.000 500.000 30000 30.000 60.000 20.000 20.0 60.0 ;"
以及以下变量:

double x1;
double x2;
int x3;
我想解析上面的字符串,这样最后

x1 = 500.000
x2 = 500.000
x3 = 30000
进行这种解析的最佳方法是什么?如能提供代码片段,将不胜感激

谢谢

更新


好的,当我说“最好”时,我实际上是指“最容易”,比如“什么时候给你一个上面的示例字符串,你确切地知道字符串是如何格式化的”。e、 一个字符,后跟两个双精度数字,后跟一个整数等。。。我所关心的是最短的代码,也是整洁和简单的。无需考虑时间和额外的数据处理。

stringstream适合您的需要:

#include <sstream>

std::istringstream iss(str);
iss.get(); //'I'

if (iss >> x1 >> x2 >> x3) {
    //success
}

按如下方式使用stringstream:

string str = "I 500.000 500.000 30000 30.000 60.000 20.000 20.0 60.0 ;"
stringstream ss(str);
char c =' ';

ss >>c>> x1 >> x2  >>x3 ;

我在寻找最好的方法,并不是说我不知道怎么做。探索其他方法总是很好的。定义最佳?最快的?记忆最少?最少的源代码?最小二进制大小?处理字符串中最多的额外内容?strtod在这方面非常出色。@user44273,如果您发布您拥有的内容并定义您需要的内容,那么提供最相关的信息就容易多了。