пользовательский ввод — преобразование строки в удвоение, в то время как строка имеет N десятичных знаков, переполнение стека

Я хочу сделать вектор двойников из пользовательского ввода. Эти строки кода, как правило, выполняют то, что я хочу, за исключением двух случаев, и, если их больше, сообщите мне. Два случая, если есть два или более десятичных разрядов, и если есть один или несколько пробелов. Второй десятичный знак действует как пробел. Так что, если пользователь введет это: 0.2.0.1 или 0.2 0.1, я получу два десятичных знака для обоих экземпляров, и они будут 0.2 и 0.1. Пожалуйста помоги мне с этим. Я хочу убедиться, что я делаю эту простую задачу правильно. Я делаю это в C ++.

Любые другие предложения приветствуются.

for(int i = 0; i <= ARRSIZE; i++)
{
cout << "Please enter a decimal value: ";
if (cin >> sumScores)
{
scoresVector.push_back(sumScores);
cin.clear();
cin.ignore();
}else
{
cout << "This is not a double\n";
scoresVector.push_back(0);
cin.clear();
cin.ignore();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}

2

Решение

Существуют лучшие решения для обработки входных данных, но все они требуют некоторого дополнительного кода. Самый простой способ — прочитать строку, используя std::getline и проанализировать их с помощью струнного потока.

for (int i = 0; i <= ARRSIZE; i++) {
std::cout << "Please enter a decimal value: " << std::flush;
std::string s;
if (!std::getline(std::cin, s))
break;

std::istringstream is(s);
double d;
if (is >> d >> std::skipws && is.eof()) {
scoresVector.push_back(d);
} else {
std::cout << "This is not a double\n";
scoresVector.push_back(0);
}
}
3

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector