[英]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.