C++ read int16_t (компилятор G++)

Мне нужно хранить значение в int16_t из stdint.h. Как я могу прочитать это значение из терминала пользователя?

Выход из этого ответа ( у нас есть int32_t, int16_t, uint64_t и т. Д. Но где же находятся atoi32, atoi16, atoui64 и т. Д.?) Не работает на компиляторе Ubuntu g++.

Я предпочитаю использовать стандартные библиотеки C++. Что-то вроде:

#include <cstdio> 
#include <stdint.h>
#include <iostream>

using namespace std;

int main ( void ) {
    char value [] = "111";
    int16_t tmp;

    if ( sscanf ( value, "%???", & tmp) == 1 ) cout << "OK" << endl;

    return 0;
}

Или лучше прочитать стандартное целое число, а затем преобразовать его?

Я не использую C++11.

1 ответ

Решение

Прекратите использовать старые функции C и начните использовать функциональность C++:

std::string value = "111";

std::istringstream is(value);
if (is >> tmp)
    std::cout << "OK\n";

Если вы хотите прочитать это от пользователя, то используйте std::cin вместо:

if (std::cin >> tmp)
    std::cout << "OK\n";
Другие вопросы по тегам