Мне нужно хранить ценность в 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.
Прекратите использовать старые функции 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";
Других решений пока нет …