1

非常noobish,简单的问题,希望有一个简单的答案。我的问题基本上归结为函数参数上的一行代码:

void className::read(const string &)
{
  ifstream fin;
  fin.open(fname);
  /* ...function code */
  fin.close()
}

输入在 main 中建立为字符串 fname (ie object.read(fname))。当我这样做时,它告诉我 fname 尚未在此范围内声明。因此,我的问题是如何使用输入 fname 作为 fin.open() 中的文件名。感谢所有已经帮助过的人,并为之前对这个问题的糟糕解释感到抱歉。

4

3 回答 3

1

如果 fname 可以很好地引用函数参数,因为它有一个 const 修饰符。所以你必须删除 const 修饰符。一旦完成,就像分配给任何其他变量一样。

但是,如果您的意思是在函数中使用 fname 的值,那就更简单了,您只需创建一个新变量并分配它:

std::string newVariable = fname;
于 2012-09-17T02:11:14.163 回答
1

我可能过于简单化了,但这就是你想要的吗?的命名参数fname

void className::read(const string& fname)
{
  printf(fname.c_str()); // Do what you want with the string.
}
于 2012-09-17T02:13:33.973 回答
1

我不确定我是否理解你的问题。您是在问是否可以fname在函数内进行修改?如果这是您想要的,您需要修改read函数的签名以获取非常量引用。

void className::read( string& fname )
{
  fname = "something else";  // this change is visible even after the 
                             // function returns
}

或者您是在问如何创建一个本地字符串,它是 的副本fname

void className::read( const string& fname )
{
  std::string local = fname;  // local contains a copy of fname
}
于 2012-09-17T02:16:52.127 回答