从函数参数常量字符串 (&) 设置值

Setting a value from function parameter const string(&)

本文关键字:设置 字符串 函数 参数 常量      更新时间:2023-10-16

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

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

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

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

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

std::string newVariable = fname;

我可能过于简化了这一点,但这是您想要的吗?命名参数 fname

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

我不确定我是否理解你的问题。您是在问是否可以在函数中修改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
}