Ich muss ein Programm schreiben, das es dem Benutzer ermöglicht bis zu 20 Namen von bis zu 40 Zeichen pro einzugeben.Stringlänge innerhalb eines Sets begrenzen?
Wenn ich den Code schreibe, ohne zu versuchen, die String-Längen in irgendeiner Weise zu begrenzen, funktioniert es. Aber wenn ich versuche, die String-Länge mit einer if/else-Anweisung zu begrenzen, funktioniert es nicht. Ich bin ziemlich neu in C++, also war es wirklich ein Schuss in die Dunkelheit. Was mache ich falsch?
#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;
}
Ausgang:
1. (user inputs name here)
press any key to continue...
EDITED CODE:
#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;
}
}
Wenn ich das tue, erlaubt es mir nur an den Eingang 1 Namen, nicht alle 20. Zum Beispiel: Eingabe: 1. Max Ausgabe: Max –
Bitte geben Sie den bearbeiteten Code ein. – Reshad
Ich habe den neuen Code bearbeitet und am Ende hinzugefügt. –