c++ - 打印不同的字符串以读取不同的对象变量

标签 c++ class

我希望输出不同的字符串来读取变量。例如,在下面,我希望在使用 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/

相关文章:

objective-c - 在类上调用静态方法

c++ - 类不被认可

javascript - 如何导出没有大括号的扩展类? ( Node JS)

c++ - 在C++中接受多个字符串作为输入

html - CSS center a <ul> tag within div 问题

C++ 文件输入从下一行开始

c++ - 如何将控制台指定为要用 ostream 写入的文件?

java - 这个类是另一个类的子类型吗?

c++ - 在可能的情况下扩展为 static_assert 的断言宏?

c++ - 如果没有堆内存,如何释放 std::vector