Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我需要帮助在一个类中输入两个字符串并获取其输出_C++_String - Fatal编程技术网

C++ 我需要帮助在一个类中输入两个字符串并获取其输出

C++ 我需要帮助在一个类中输入两个字符串并获取其输出,c++,string,C++,String,当我试图在程序中输入两个字符串名称str1和str2时,它给出了一个错误 cpp|19|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'int' in return| |26|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to

当我试图在程序中输入两个字符串名称
str1
str2
时,它给出了一个错误

cpp|19|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'int' in return| |26|error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'int' in return| cpp | 19 |错误:无法将'std::uCxx11::string'{aka'std::uCxx11::basic_string'}转换为'int'作为返回| |26 |错误:无法将'std::ucx11::string'{aka'std::uucx11::basic_string'}转换为'int'作为返回|
#包括
#包括
#包括
使用名称空间std;
班级学生
{
字符串str1,str2;
公众:
无效集合名称(字符串a)
{
str1=a;
}
int get_first_name()
{
返回str1;
}
无效集合\姓氏\名称(字符串b){
str2=b;
}
int get_last_name()
{
返回str2;
}
};
int main(){
字符串名、姓;
cin>>名字>>姓氏;//输入字符串
学生会;
st.set_first_name(first_name);//在学生课堂上设置字符串1
st.set_last_name(last_name);//在学生课堂上设置字符串2

cout函数的返回类型是int,而不是string。

这是因为getter函数的返回类型是int而不是string:

string get_first_name()
    {
        return str1;
    }
string get_last_name()
    {
        return str2;
    }
更新:回答评论中的问题

class Student
{

    string str1,str2;
    int age, st;

    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;
    }

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

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

班级学生
{
字符串str1,str2;
国际年龄,圣彼得堡;
公众:
无效集合名称(字符串a)
{
str1=a;
}
int get_first_name()
{
返回str1;
}
无效集合\姓氏\名称(字符串b){
str2=b;
}
int get_last_name()
{
返回str2;
}

friend std::ostream&operator在您的第一个错误案例中,您试图返回
std::string
对象,其中需要
int
值。您的
get_first_name()
get_last_name()
getter需要返回
std::string
,而不是
int
,例如:

string get_first_name()
{
    return str1;
}

string get_last_name()
{
    return str2;
}
在第二个错误案例中,代码中存在多个语法错误。有多个语法元素缺失或位置错误

代码应该更像这样:

班级学生
{
std::字符串str1,str2;
int ag,st;
公众:
void set_first_name(标准::字符串a)
{
str1=a;
}
std::string get_first_name()const/
#include
#包括
使用名称空间std;
班级学生{
私人:
智力年龄;
国际标准;
字符串名;
字符串last_name;
公众:
无效集_年龄(整数a){
年龄=a;
}
int get_age(){
回归年龄;
}
无效集_标准(int b){
标准=b;
}
int get_标准(){
退货标准;
}
无效集合名称(字符串c){
第一个名称=c;
}
字符串get_first_name(){
返回第一个名称;
}
无效集合\姓氏\名称(字符串d){
姓氏=d;
}
字符串get_last_name(){
返回姓氏;
}
字符串到_字符串()
{
细流ss;
字符c=',';

sscout您定义的函数返回
int
,但试图从中返回
std::string
。编译器的错误说明了同样的事情。您不清楚这个编译错误,您想问的是什么?@drescherjm您说得对,我修复了返回类型,但错误现在是error:'class StudeNT’没有成员名为“toSoStand”@ AdEez,现在需要实现成员函数<代码>::to-StReg()/Cuth>。C++没有自动添加这样的函数,比如java中发生的函数,每个类都得到了<代码> toStReg()
继承自
java.lang.Object
类。新问题的解决方案:在类后面去掉get_standard(void),在}前面加分号以获取标准class@NixonN我如何返回字符串??只需像我一样将字符串放在getter函数的返回类型中。或者你实际上是什么意思?@nixon你能帮我做一件事吗?我想在最后一行得到这样的输出(15,john,carmack,10)我怎么弄到这个你可以超负荷operator@aadeez你可以编辑你的文章,但你不应该删除文章的第一部分。你应该只是附加它。
string get_first_name()
    {
        return str1;
    }
string get_last_name()
    {
        return str2;
    }
class Student
{

    string str1,str2;
    int age, st;

    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;
    }

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

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

int main()
{
    Student me;
    std::cout << me;
}
string get_first_name()
{
    return str1;
}

string get_last_name()
{
    return str2;
}
#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;
}