在 C++ 中传递值

Passing values in C++

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

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){

....
}

你可以return一个元组。

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类型依赖于return语句。所以无论我传递 std::make_tuple,函数都会自动 return 正确的 std::tuple<T1, T2, ..., Tn>std::make_tuple 的结果)。
std::tuple 是一个简洁的模板,可让您即时将数据捆绑在一起,而无需声明您自己的 struct。如果您的 returned 对象对于默认构造来说并不昂贵,那么还有一个实用程序可以解包元组:

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