Альтернатива C++ для анализа ввода с помощью sscanfC++

Программы на C++. Форум разработчиков
Anonymous
 Альтернатива C++ для анализа ввода с помощью sscanf

Сообщение Anonymous »

Предполагая, что моя программа ожидает аргументы вида [ 0.562 , 1.4e-2 ] (т. е. пары чисел с плавающей запятой), как мне проанализировать эти входные данные в C++ без регулярных выражений? Я знаю, что есть много крайних случаев, которые следует учитывать, когда дело доходит до пользовательского ввода, но давайте предположим, что данный ввод точно соответствует приведенному выше формату (за исключением дополнительных пробелов).

In C я мог бы сделать что-то вроде sscanf(string, "[%g , %g]", &f1, &f2);, чтобы извлечь два значения с плавающей запятой, что очень компактно.

В C++ я пока что придумал следующее:

Код: Выделить всё

std::string s = "[ 0.562 , 1.4e-2 ]"; // example input

float f1 = 0.0f, f2 = 0.0f;

size_t leftBound = s.find('[', 0) + 1;
size_t count = s.find(']', leftBound) - leftBound;

std::istringstream ss(s.substr(leftBound, count));
string garbage;

ss >> f1 >> garbage >> f2;

if(!ss)
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/23304177/c-alternative-for-parsing-input-with-sscanf[/url]

Вернуться в «C++»