Как преобразовать строку С++ в int?

Возможный дубликат:
Как разбирать строку в int на С++?

Как преобразовать строку С++ в int?

Предположим, что вы ожидаете, что строка содержит фактические цифры (например, "1", "345", "38944" ).

Кроме того, предположим, что у вас нет повышения, и вы действительно хотите сделать это на С++, а не на жестоком старом пути C.

Ответ 1

#include <sstream>

// st is input string
int result;
stringstream(st) >> result;

Ответ 2

Используйте потоки С++.

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* Lets not forget to error checking */
if (!str)
{
     // The conversion failed.
     // Need to do something here.
     // Maybe throw an exception
}

PS. Этот основной принцип заключается в том, как работает библиотека boost lexical_cast<>.

Мой любимый метод - это boost lexical_cast<>

#include <boost/lexical_cast.hpp>

int x = boost::lexical_cast<int>("123");

Он предоставляет способ преобразования между строковым и числовым форматами и обратно. Под ним используется поток строк, так что все, что может быть маршалировано в поток, а затем не связано с потоком (посмотрите на → и < операторы).

Ответ 3

Я использовал в коде С++ что-то вроде следующего:

#include <sstream>
int main()
{
    char* str = "1234";
    std::stringstream s_str( str );
    int i;
    s_str >> i;
}

Ответ 5

Позвольте мне добавить свой голос для boost:: lexical_cast

#include <boost/lexical_cast.hpp>

int val = boost::lexical_cast<int>(strval) ;

Он выдает bad_lexical_cast при ошибке.

Ответ 6

Используйте atoi

Ответ 7

Возможно, я не понимаю вопрос, почему именно вы не захотите использовать atoi? Я не вижу смысла изобретать колесо.

Я просто пропустил здесь пункт?

Ответ 8

в "stdapi.h"

StrToInt

Эта функция сообщает вам результат и количество символов, участвующих в преобразовании.