Вытащить 2 числа из строки символов? - PullRequest
0 голосов
/ 13 сентября 2010

Я пытаюсь написать метод для установки 2 переменных в числа в строке символов. Строка будет выглядеть примерно так:

[-][1][ ][ ][ ][ ][2][.][0][4]

Где числа -1 и 2.04 могут быть извлечены. Я знаю, что подпись метода может выглядеть примерно так:

sscanf(array[i],"%d%f",&someint,&somedouble)

Но я, честно говоря, не уверен, как писать. Любая помощь будет принята с благодарностью

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

ты почти там:

sscanf(array[i], "%d %lf",&someint, &somedouble)

, где пробел означает «0, 1 или более любого пустого символа»

но если вы используете C ++, а не C, лучше начать с потоков C ++. Это будет намного проще.

#include <sstream>
std::istringstream my_number_stream(array[i]);
if (!(my_number_stream >> std::skipws >> someint >> somedouble)) {
    // oh noes ! an error !
}
3 голосов
/ 13 сентября 2010

Это должно сделать вашу работу:

    int x;
    float y;
    const char* ss = "-1    2.04";
    istringstream iss(ss);
    iss >> x >> y;
0 голосов
/ 13 сентября 2010

Если ввод предоставлен пользователем, например, кто-то набрал его, сначала вы должны его нормализовать: замените много пробелов на одно, замените табуляцию пробелом, замените запятую точкой (некоторые используют запятую для десятичного разделителя вместо точки), обрежьте начальные и конечные пробелы и т. д. () (или что вы выбираете для разбора) легче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...