В общем столкнулся с такой проблемой, как ввод числа в консоли. Так вышло что консоль, выводит числа не совсем корректно как хотелось бы. либо
В чистом 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();
}
Вы же уже исплоьзуете QTextStream
для вывода, почему бы не использовать его и для ввода вместо std::cin
?
QTextStream in(stdin);
QString str;
in >> str;
Даже если по какой-то причине вам нужен обязательно std::cin
, то, на крайний случай, всегда можно читать в std::string
и конвертировать в QString
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу программу, используя С++11Появилась необходимость создать новый процесс
Какая в C++ есть альтернатива питоновскому enumerate, чтобы было что-то вроде этого:
При создании проекта выбрал пустой проект, тк