[英]Returning multiple values in a struct
所以我有这个代码,但我有一些需要调整的东西......
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct Student {
string major;
string name;
int year;
};
string yearToString(Student s) {
string stringYear;
ostringstream convert;
convert << s.year;
stringYear = convert.str();
cout << stringYear << endl; // this prints 3
return stringYear; // this returns nothing
}
int main() {
Student* students = new Student[2];
students[0].major = "Computer Science";
students[0].name = "Jermaine";
students[0].year = 2;
students[1].major = "Biology";
students[1].name = "Kelsey";
students[1].year = 3;
yearToString(students[1]);
delete[] students;
return (0);
}
我想知道为什么我的return语句没有返回值3? 还可以说我想返回结构的多个值。 我如何归还“杰梅因,计算机科学(2)”之类的东西。 谁能指出我正确的方向?
你怎么知道这没有什么回报......
yearToString(students[1]);
......当你没有做任何回报的事情? 你的意思是把它分配给某事吗?
std::string yrStr = yearToString(students[1]);
std::cout << yrStr << std::endl; // prints 3
您不以任何方式使用返回的值。 将代码更改为:
cout << yearToString(students[1]) << endl;
按预期打印3。
您似乎将表示内存中数据的struct
与呈现给用户的格式化字符串混合在一起。 您可能想要返回的似乎是后者。 在这种情况下,您需要做的就是格式化结构:
ostringstream ostr;
ostr << s.name << ", " << s.major << " (" << s.year << ")";
return ostr.str();
要从结构中返回多个值,有两个主要选择:
struct Result
{
std::string student_name;
std::string course_name;
};
Result My_Function()
{
Result value;
value.student_name = "Jermaine";
value.course_name = "Biology 101";
return value;
}
void Sams_Function(Result& value)
{
value.student_name = "Jermaine";
value.course_name = "Biology 101";
}
另一种不优选的方法是通过引用传递许多变量:
void Another_Function(std::string& student_name,
std::string& course_name)
{
student_name = "Jermaine";
course_name = "Biology 101";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.