我有一个从文件中读取一些变量的函数:
void ReadFromFile(const string& inicod){
string buf;
ifstream infile(inicod);
infile >> N; getline(infile, buf);
infile >> t_end; getline(infile, buf);
infile >> L; getline(infile, buf);
...
我必须在main中访问这些变量N,t_end,L.我应该在哪里声明它们(如全局变量?)以及如何访问它们?
答案 0 :(得分:2)
你可以返回一个元组。
auto ReadFromFile(const string& inicod){
string buf;
ifstream infile(inicod);
infile >> N; getline(infile, buf);
infile >> t_end; getline(infile, buf);
infile >> L; getline(infile, buf);
return std::make_tuple(N, t_end, L);
}
auto
表示函数的返回类型取决于return语句。因此无论我通过std::make_tuple
,该函数都会自动返回正确的std::tuple<T1, T2, ..., Tn>
(std::make_tuple
的结果)。
std::tuple
是一个简洁的模板,可让您即时捆绑数据,而无需声明自己的struct
。如果返回的对象的默认构造成本不高,那么还有一个解压缩元组的实用程序:
//N, t_end, L definition
std::tie(N, t_end, L) = ReadFromFile(inicod);
答案 1 :(得分:0)
您可以将引用转移到变量,如:
void ReadFromFile(const string& inicod,string &N,string &e_end,string &L){
....
}