C++ 在C+中传递值+;

C++ 在C+中传递值+;,c++,io,readfile,C++,Io,Readfile,我有一个从文件中读取一些变量的函数: 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

我有一个从文件中读取一些变量的函数:

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。我应该在哪里声明它们(如全局变量?)以及如何访问它们?

您可以传递对变量的引用,如:

void ReadFromFile(const string& inicod,string &N,string &e_end,string &L){

....
}

您可以返回一个元组

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
(std::make_tuple的结果)。
std::tuple
是一个整洁的模板,它允许您动态地将数据捆绑在一起,而无需声明自己的
struct
。如果返回的对象的默认构造成本不高,那么还有一个解包元组的实用程序:

//N, t_end, L definition
std::tie(N, t_end, L) = ReadFromFile(inicod);

对于初学者来说,没有任何解释是不容易理解的,比如汽车type@Treycos,
auto
所有东西的返回类型?我本以为
std::tuple
更值得细细琢磨。是的,我只是想更好地解释一下为什么要使用auto而不是它,但是nvm;)@Treycos,添加了一个短段落。“谢谢你的建议。”科伦比,如果这对你有用的话,考虑接受答案(在投票按钮下标记V),以回答这个问题。