用C ++传递值

时间:2016-10-26 13:39:25

标签: 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_end,L.我应该在哪里声明它们(如全局变量?)以及如何访问它们?

2 个答案:

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

....
}