2013-04-30 2 views
1

Мне интересно, какой будет лучший способ разбора координат, которые объединяются в одном и том же string в C++.Лучший способ разобрать координатную строку в C++

Примеры:

1,5 
42.324234,-2.656264 

Результат должен быть две переменные double ...

+1

Как вы анализируете нецелое число в 'long'? – Angew

+0

Думаю, он имел в виду двойники. – stardust

+0

Да, извините ... отредактировал ... – apascual

ответ

4

Если формат строки всегда как x,y, то это должно быть достаточно.

#include <string> 
#include <sstream> 

double x, y; 
char sep; 
string str = "42.324234,-2.656264"; 
istringstream iss(str); 

iss >> x; 
iss >> sep; 
iss >> y; 
+0

Очень красивый и понятный ответ ... Пожалуйста, исправьте «istrinstream» -> «stringstream», чтобы другие могли найти это полезным тоже ... :-) – apascual

+0

@apascua Спасибо. и сделано. – stardust

1

Extract каждую строку с помощью while (std::getline(stream, line)), а затем инициализировать std::istringstream с line. После этого вы можете извлечь из него так:

double x, y; 
if (line_stream >> x && 
    line_stream.get() == ',' && 
    line_stream >> y) { 
    // Extracted successfully 
} 
Смежные вопросы