C++ 输入语句
C++ Input Sentence
我在将句子输入字符或字符串时遇到问题。
std::string STabPytania;
bool OK=true;
void pobieranie()
{
cout << "Podaj ilosc pytan :";
cin >> iloscP;
for (pytanie = 1; pytanie <= iloscP; pytanie++)
{
cout << "__________________________________________________________";
cout << "\n Napisz tresc pytania nr" << pytanie << " :";
std::getline(cin, STabPytania);
cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
cin >> iloscO;
for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
{
cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
cin >> TabOdpowiedzi[pytanie][odpowiedzi];
}
}
}
但是当问我句子程序不等我输入就跳到下一条指令时,为什么?
Debuging
Code
cin
有时会因为缓冲区中的 \n
字符而产生问题。如此干净以至于每次使用 cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
如下所示:-
void pobieranie()
{
cout << "Podaj ilosc pytan :";
cin >> iloscP;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
for (pytanie = 1; pytanie <= iloscP; pytanie++)
{
cout << "__________________________________________________________";
cout << "\n Napisz tresc pytania nr" << pytanie << " :";
std::getline(cin, STabPytania);
cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
cin >> iloscO;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
{
cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
cin >> TabOdpowiedzi[pytanie][odpowiedzi];
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
}
}
}
我在将句子输入字符或字符串时遇到问题。
std::string STabPytania;
bool OK=true;
void pobieranie()
{
cout << "Podaj ilosc pytan :";
cin >> iloscP;
for (pytanie = 1; pytanie <= iloscP; pytanie++)
{
cout << "__________________________________________________________";
cout << "\n Napisz tresc pytania nr" << pytanie << " :";
std::getline(cin, STabPytania);
cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
cin >> iloscO;
for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
{
cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
cin >> TabOdpowiedzi[pytanie][odpowiedzi];
}
}
}
但是当问我句子程序不等我输入就跳到下一条指令时,为什么?
Debuging
Code
cin
有时会因为缓冲区中的 \n
字符而产生问题。如此干净以至于每次使用 cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
如下所示:-
void pobieranie()
{
cout << "Podaj ilosc pytan :";
cin >> iloscP;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
for (pytanie = 1; pytanie <= iloscP; pytanie++)
{
cout << "__________________________________________________________";
cout << "\n Napisz tresc pytania nr" << pytanie << " :";
std::getline(cin, STabPytania);
cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
cin >> iloscO;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
{
cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
cin >> TabOdpowiedzi[pytanie][odpowiedzi];
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
}
}
}