2013-04-06 2 views
-3

Допустим, у меня есть следующая строка:C++: Лучший способ разбора строки в двойной

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 

Что было бы лучшим способом сделать такой синтаксический анализ? Фрагмент кода будет высоко оценен.

Спасибо!


UPDATE

Хорошо, когда я сказал, что «лучше» я на самом деле имел в виду простой, как в том, когда вы Задана строка выборки, как указано выше, где вы точно знаете, как форматируется строка. например, символ, за которым следуют два удвоения, за которыми следует целое число и т. д. ... и все, что мне небезразлично, - это самый короткий код, который также является простым и простым. Не нужно заботиться о времени и дополнительной обработке данных.

+4

Показать некоторые усилия .. –

+0

Я искал лучший способ, не то, что я не знаю, как сделать это. Всегда полезно исследовать другие способы сделать это. – user44273

+2

Определите «лучший»? Самый быстрый? Меньшая память? Наименьший исходный код? Меньше бинарных размеров? Обрабатывает самый дополнительный материал в строке? 'strtod' очень хорош в этом. –

ответ

3

stringstream соответствует вашим потребностям:

#include <sstream> 

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

if (iss >> x1 >> x2 >> x3) { 
    //success 
} 
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 ; 
Смежные вопросы