C ++:将字符串解析为double的最佳方法

时间:2013-04-06 18:40:48

标签: 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

进行此类解析的最佳方法是什么?我们非常感谢您的代码段。

谢谢!


更新

好吧,当我说“最好”时,我实际上意味着最简单,就像你在什么时候给你一个样本字符串,你知道字符串是如何格式化的。例如,一个字符后跟两个双精度后跟一个整数等...而我所关心的只是最简洁的代码。无需处理时间和额外的数据处理。

2 个答案:

答案 0 :(得分:3)

stringstream满足您的需求:

#include <sstream>

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

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

答案 1 :(得分:2)

使用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 ;