Почему этот код неправильно читает ввод пользователя?
Поэтому я пытаюсь написать код для конвертера единиц, основанный на вводе пользователем значения и единиц. Этот код иногда правильно читает ввод и печатает значение и единицы, но иногда он не читает ни ввод, ни ввод. Кажется, не имеет значения, есть ли пробел между числами и единицами ввода, независимо от того, правильно ли читается код или нет. Но я бы хотел, чтобы пространство не имело значения (например, "12 м" против "12 м")
#include <iostream>
#include <string>
using namespace std;
int main()
{
string units;
double val0 = 0;
cout << "input value and units\n";
cin >> val0 >> units;
cout << "value: " << val0 << "\nunits: " << units << endl;
return 0;
}
1 ответ
То, как вы его запрограммировали в настоящее время, всегда будет иметь место, если вы беспокоитесь о том, что пользователь может сломать вашу программу из-за ее неправильного использования.
Если вы хотите, чтобы пространство было произвольным, рассмотрите возможность использования getline
функционировать и реализовать свою функцию следующим образом:
string entireLine;
getline(cin, entireLine); //will store either "12 m" or "12m" in entire line
//detect if entireLine contains a space
//run isSpace() in a loop across every character in entireLine
//parse the string one way if there is a space
//parse the string if there isn't a space