从函数参数const string(&)设置一个值

时间:2012-09-17 02:06:41

标签: c++

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

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

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

3 个答案:

答案 0 :(得分:1)

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

但是,如果您想在函数中使用fname的值更简单,那么只需创建一个新变量并赋值:

std::string newVariable = fname;

答案 1 :(得分:1)

我可能会过度简化这一点,但这是你想要的吗?命名参数fname

void className::read(const string& fname)
{
  printf(fname.c_str()); // Do what you want with the string.
}

答案 2 :(得分:1)

我不确定我理解你的问题。您是否在询问是否可以在功能中修改fname?如果这是您想要的,您需要修改read函数的签名以获取非const引用。

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
}