Мне нужно хранить значение в int16_t от stdint.h. Как я могу прочитать это значение с терминала пользователя?C++ read int16_t (компилятор G ++)
Способ от ответа (So, we have int32_t, int16_t, uint64_t, etc.. But where are the atoi32, atoi16, atoui64, etc...?) не работает на компиляторе 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++ 11? Если это так, вам нужно добавить пробел между строковым литералом и идентификатором: 'scanf ("% "SCNd16, &tmp);', потому что иначе он будет интерпретировать его как суффикс. –
Извините, я забыл написать его. t использовать C++ 11, но спасибо. –