首页 > 解决方案 > 我需要帮助在一个类中输入两个字符串并获取它的输出

问题描述

当我尝试输入两个字符串名称str1str2在程序中它给我错误

cpp|19|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'int' in return|

|26|错误:无法将 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} 转换为 'int' 作为返回|
#include <iostream>
#include <sstream>
#include<string>
using namespace std;

class Student
{

    string str1,str2;

    public:

    void set_first_name(string a)
    {
    str1=a;
    }
    int get_first_name()
    {
        return str1;
    }
    void set_last_name(string b){
        str2=b;
    }
    int get_last_name()
    {
        return str2;
    }


    };

    int main() {
    string first_name, last_name;

    cin >>  first_name >> last_name ;   //Entering the string 

    Student st;


    st.set_first_name(first_name);      //setting the string 1 in class Student
    st.set_last_name(last_name);        //setting the string 2 in class Student


    cout << st.get_last_name() << ", " << st.get_first_name() << "\n";  // calling first and second string

    cout << st.to_string();      //I don't know what 

    return 0;
    }

新问题是

class Student
{

    string str1,str2;
    int ag, st;

    public:
    void set_first_name(string a)
    {
    str1=a;
    }
    string get_first_name()
    {
        return str1;
    }
    void set_last_name(string b){
        str2=b;
    }
    string get_last_name()
    {
        return str2;
    }
    void set_age(int ag1)
    {
        ag=ag1;
    }
    int get_age(){
    return ag;}
    void set_standard(int st1){
    st=st1;}
    int get_standard(){
    return st};

    friend std::ostream& operator<<(std::ostream&, const Student&);
};

std::ostream& operator<<(std::ostream& out, const Student& student)
{
    out << "("<<student.ag<<","<<student.str1 << "," << student.str2 << "," << student.st << ")";
    return out;
}
    int get_standard(void)
    {
        return st;
    }
};

int main() {
    int age, standard;
    string first_name, last_name;

    cin >> age >> first_name >> last_name >> standard;

    Student st;
    st.set_age(age);
    st.set_standard(standard);
    st.set_first_name(first_name);
    st.set_last_name(last_name);

    cout << st.get_age() << "\n";
    cout << st.get_last_name() << ", " << st.get_first_name() << "\n";
    cout << st.get_standard() << "\n";
    cout << "\n";
    std::cout << st;
    return 0;
}

错误是

错误:预期的';' 在 '}' 标记之前

错误:未在此范围内声明“st”

错误:“}”标记之前的预期声明

标签: c++string

解决方案


#include <iostream>
#include <sstream>
using namespace std;

class Student{
    private:
        int age;
        int standard;
        string first_name;
        string last_name;
    public:
        void set_age(int a){
            age = a;
        }
        int get_age(){
            return age;
        }

        void set_standard(int b){
            standard = b;
        }
        int get_standard(){
            return standard;
        }

        void set_first_name(string c){
            first_name = c;
        }
        string get_first_name(){
            return first_name;
        }

        void set_last_name(string d){
            last_name = d;
        }
        string get_last_name(){
            return last_name;
        }

        string to_string()
        {
            stringstream ss;
            char c = ',';
            ss<<age<<c<<first_name<<c<<last_name<<c<<standard;
            return ss.str();
        }
};


int main() {
    int age, standard;
    string first_name, last_name;

    cin >> age >> first_name >> last_name >> standard;

    Student st;
    st.set_age(age);
    st.set_standard(standard);
    st.set_first_name(first_name);
    st.set_last_name(last_name);

    cout << st.get_age() << "\n";
    cout << st.get_last_name() << ", " << st.get_first_name() << "\n";
    cout << st.get_standard() << "\n";
    cout << "\n";
    cout << st.to_string();

    return 0;
}

推荐阅读