我希望输出不同的字符串来读取变量。例如,在下面,我希望在使用 eng.setmarks() 阅读 english marks 之前打印 Enter english marks。请建议一种实现方法。
这是我的代码:(查看下面的 for 循环)
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
class student {
char name[20];
int age;
class marks {
int marks;
public:
void setmarks( int x) {
marks = x;
}
int getmarks() {
return marks;
}
};
public:
marks eng, math, phy, chem, cs; // nested objects are public
void setname( char* n) {
strncpy( name, n, 20);
}
char* getname() {
return name;
}
void setage( int a) {
age = a;
}
float total() {
size_t total = eng.getmarks() + math.getmarks() +
phy.getmarks() + chem.getmarks() + cs.getmarks();
return total/500.0;
}
};
int main() {a
student new_stud;
char temp[20];
cout << "Enter name: ";
cin >> temp;
cin.get( temp, sizeof(temp));
new_stud.setname(temp);
int age;
cout << "Enter age: ";
cin >> age;
new_stud.setage( age);
for( size_t i = 0; i < 5; ++i) {
// I wish to output: "Enter marks in" + subject_name, but harcoding it seems tedious
}
cout << "\nTotal Percentage: " << new_stud.total();
return 0;
}
最佳答案
所以如果我理解正确的话,你想打印出你将要读入的变量的名称。现在这不能按照你想要的方式完成。你能做的最好的事情就是制作一个主题名称数组和一个标记数组。
string[5] Subjects = {"Maths", "English", "Chemistry", "Physiscs", "Computer Sciences"};
marks[5] Marks;
for(int i=0;i<5;i++) {
cout << "Please enter marks in " << Subjects[i] << ":" << endl;
int a;
cin >> a;
Marks[i].setmarks(a);
}
你也可以让 marks 类有一个字段 subject name,并给它一个函数 inputfromuser(),像这样:
class marks {
int marks;
string subjectName;
public:
void setmarks( int x) {
marks = x;
}
int getmarks() {
return marks;
}
void inputfromuser() {
cout << "Please enter marks in " << subjectName << ":" << endl;
cin >> marks;
}
};
抱歉,我使用的是 std::string 类型,我对处理文本的原始 char[] 方式不太满意。
关于c++ - 打印不同的字符串以读取不同的对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955235/