ввод только double в командную строку

107
26 мая 2019, 21:10

В общем столкнулся с такой проблемой, как ввод числа в консоли. Так вышло что консоль, выводит числа не совсем корректно как хотелось бы. либо

В чистом Qt я бы запихнул "ввод" в QString а там уже обработал. НО std::cin не поддерживает QString. Конечно можно задать char[256] и его обработать, но он имеет конечный размер и это очень печально ;_: ибо я хочу сделать все правильно, или лучше через char[256] и при достижении в размера char-а более 256 сказать пользователю что он не имеет права в водить большее число ???

Я бы даже сказал как принято в таких ситуациях поступать ??

вот код но он по сути не совсем о вопросе (просто для галочки добавил ) :

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    double A_d = 0;    
    double B_d = 0;
    QTextStream outStream(stdout);
    outStream.setCodec(QTextCodec::codecForName("cp866"));
    outStream << QString("Введите первую сторону треугольника: \n А = ") << flush;
    while(!(std::cin >> A_d)){   
        outStream << QString("Ошибка ввода, пожалуйста введите число заново.") << flush;
        std::cin.clear();  
        std::fflush(stdin);    
    }
    outStream << QString(" Мы тут !!! ") << flush;
    outStream << A_d << flush;
    return a.exec();
}
Answer 1

Вы же уже исплоьзуете QTextStream для вывода, почему бы не использовать его и для ввода вместо std::cin?

QTextStream in(stdin); 
QString str;
in >> str;

Даже если по какой-то причине вам нужен обязательно std::cin, то, на крайний случай, всегда можно читать в std::string и конвертировать в QString

READ ALSO
Создание процессов в С++11

Создание процессов в С++11

Пишу программу, используя С++11Появилась необходимость создать новый процесс

137
Какая в C++ альтернатива питоновскому enumerate?

Какая в C++ альтернатива питоновскому enumerate?

Какая в C++ есть альтернатива питоновскому enumerate, чтобы было что-то вроде этого:

118
Как изменить тип проекта в Visual Studio Community 2017?

Как изменить тип проекта в Visual Studio Community 2017?

При создании проекта выбрал пустой проект, тк

155
Для чего нужны данные типы?

Для чего нужны данные типы?

int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_t

113