Ich fand, dass ich anfangen musste, getline (cin, Eingang) zu verwenden; für meine Benutzereingaben. Ich habe herausgefunden, wie man stringstream benutzt, um einen String von einem Benutzer in einen int zu konvertieren, so dass ich die Zahlen in mathematischen Funktionen speichern und verwenden kann.Wie würden Sie eine Zeichenfolge an eine Funktion übergeben und eine ganze Zahl zurückgeben?
Wenn Sie zum Beispiel sagen, dass Sie einen Benutzer nach einer Studenten-ID fragen müssen, können Sie dies leicht als Zeichenfolge speichern, da es selten ist, dass Sie irgendeine Art von mathematischen Gleichungen verwenden müssen. Wenn Sie jedoch nach Noten fragen würden, die Sie durchschnittlich auswerten und in GPAs umwandeln müssten, ist das eine andere Geschichte.
Ich möchte im Wesentlichen den Benutzer bitten, eine Zahl über getline einzugeben, dann wandeln Sie die Eingabe in ein int, aber als eine Funktion, so dass ich nicht jedes Mal, wenn ich etwas konvertieren muss, die gleiche Transaktion eingeben muss .
Beispiel:
#include<iostream>
#include<conio.h>
#include<string>
#include<sstream>
using namespace std;
class students{
int s1, s2, s3;
string name, id, input;
public:
void getData(){
cout << "Enter ID: ";
getline(cin, id);
cout << "Enter Name: ";
getline(cin, name);
while(true){
cout << "Enter grades for Math: ";
getline(cin, input);
stringstream convert(input);
if(convert >> s1)
break;
cout << "Invalid Grade; Please Try Again! " << endl;
}
while(true){
cout << "Enter grades for Science: ";
getline(cin, input);
stringstream convert(input);
if(convert >> s2)
break;
cout << "Invalid Grade; Please Try Again! " << endl;
}
while(true){
cout << "Enter grades for English: ";
getline(cin, input);
stringstream convert(input);
if(convert >> s3)
break;
cout << "Invalid Grade; Please Try Again! " << endl;
}
}
void showData(){
cout << "\n" << id << "\t" << name << "\tMath: " << s1 << "\tScience: " << s2 << "\tEnglish: " << s3;
}
};
int main(){
students s[20];
int i, numOfStudents;
string input;
while(true){
cout << "\nNumber of Students? ";
getline(cin, input);
stringstream convert(input);
if(convert >> numOfStudents)
break;
cout << "Invalid Grade; Please Try Again! " << endl;
}
for(i = 0; i < numOfStudents; i++){
s[i].getData();
}
for(i = 0; i < numOfStudents; i++){
s[i].showData();
}
_getch(); //Only there to keep the command line window open.
return 0;
}
Nicht sicher, was Sie fragen - es ist für die Unterzeichnung einer Funktion ist ein int zu nehmen und einen String zurückkehr ? – Steve
Es gibt mehrere Möglichkeiten, dies zu tun. 'std :: istringstream',' std :: stoi() 'usw. – user0042