Я новичок в cpp, и я пытаюсь тренироваться с небольшой программой голосования.
Вы отдаете в партии, а затем голоса партии.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string sInput = " ";
string sName1 = " ";
string sName2 = " ";
int iParty1 = 0;
int iParty2 = 0;
cout << "Name of the first party: ";
cin >> sName1;
cout << "Name of the second party: ";
cin >> sName2;
while (sInput != "")
{
cout << "Your vote: ";
cin >> sInput;
cout << endl;
if (sInput == sName1)
{
iParty1++;
}
else
{
if (sInput == sName2)
{
iParty2++;
}
else
{
cout << "Wrong Input" << endl;
}
}
}
cout << sName1 << ": " << iParty1 << endl;
cout << sName2 << ": " << iParty2 << endl;
getchar();
return 0;
}
Итак, вы видите цикл while. Я хочу остановить программу, если я только нажму клавишу ввода.
Но когда я это делаю, ничего не происходит. Зачем? Дайте мне подсказку!
Измените вашу функцию ввода так, чтобы она читала всю строку через std::cin
а не токенизированная строка. Вам нужно будет рассмотреть этот метод чтения, поскольку в instream могут быть пробелы. Кроме того, ваш неправильный код ввода срабатывает, когда вы просто ставите пустую строку.
Вот исправленная версия:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string sInput = " ";
string sName1 = " ";
string sName2 = " ";
int iParty1 = 0;
int iParty2 = 0;
cout << "Name of the first party: ";
cin >> sName1;
cout << "Name of the second party: ";
cin >> sName2;
cin.ignore();
while (sInput != "")
{
cout << "Your vote: ";
getline(cin, sInput);
cout << endl;
if (sInput == sName1)
{
iParty1++;
}
else
{
if (sInput == sName2)
{
iParty2++;
}
else
{
cout << "Wrong Input" << endl;
}
}
}
cout << sName1 << ": " << iParty1 << endl;
cout << sName2 << ": " << iParty2 << endl;
getchar();
return;
}
Других решений пока нет …