Я должен написать программу, которая позволяет пользователю вводить до 20 имен от до 40 символов каждый.Ограничить длину строки в наборе?
Когда я пишу код, не пытаясь ограничить длину строк каким-либо образом, он работает. Но когда я пытаюсь ограничить длину строки оператором if/else, это не сработает. Я довольно новичок в C++, так что это был действительно выстрел в темноте. Что я делаю не так?
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
void print(const string& name) {
cout << name << endl;
}
int main() {
set<string> ListOfNames;
cout << "Please enter up to 20 names of up to 40 characters each below: " << endl;
for (int i = 1; i <= 20; ++i) {
string name;
cout << i << ". ";
getline(cin, name);
if (name.size() >= 40) {
ListOfNames.insert(name);
}
else break;
cerr << "You entered more than 40 characters. Please try again.";
}
for_each(ListOfNames.begin(), ListOfNames.end(), &print);
return 0;
}
Выход:
1. (user inputs name here)
press any key to continue...
EDITED КОД:
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
void print(const string& name) {
cout << name << endl;
}
int main() {
set<string> ListOfNames;
cout << "Please enter up to 20 names of up to 40 characters each below: " << endl;
for (int i = 1; i <= 20; ++i) {
string name;
cout << i << ". ";
getline(cin, name);
if (name.size() <= 40) {
ListOfNames.insert(name);
}
else
{
cerr << "You entered more than 40 characters. Please try again.";
break;
}
for_each(ListOfNames.begin(), ListOfNames.end(), &print);
return 0;
}
}
Когда я делаю это, это позволяет мне только вход 1 имя, а не все 20. Например: Вход: 1. Макс. Выход: Макс. –
, пожалуйста, разместите отредактированный код. – Reshad
Я отредактировал и добавил новый код в конце. –