stdint — 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.

0

Решение

Прекратите использовать старые функции 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";
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]