c++ - 我的函数不传输 substr c++

标签 c++

我的功能:

void Object::actionsFace(std::string &line, int &iteration_face);

我将substr传递给函数

actionsFace(line.substr(begin, i), cnt)

它不起作用。

如果我使用:

        std::string test = line.substr(begin, i);

        actionsFace(line.substr(begin, i), cnt);

工作正常。

如何将 substr 用于我的函数?

最佳答案

您正在尝试将 std::string::substr 返回的临时值绑定(bind)到非常量引用。你不能那样做,但你可以绑定(bind)到一个常量引用:

void Object::actionsFace(const std::string &line, int &iteration_face);

这将传递对临时字符串的引用,但您不能在函数内部修改它。

或者,您可以显式制作一个拷贝,就像示例中的 test 一样。或者,如果您只需要函数内部字符串的本地拷贝,您可以按值传递:

void Object::actionsFace(std::string line, int &iteration_face);

关于c++ - 我的函数不传输 substr c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786551/

相关文章:

c++ - 在 C++ 中这种声明是什么意思?

c++ - CMake 没有按预期链接库(如何强制链接)

c++ - 作为非类型模板参数的常量字符串引用

c++ - '__builtin_address of' : identifier not found when running opencv in Visual Studio 2015

c++ - 当我在 C++ 中终止 pThread 时,是否会调用堆栈上对象的析构函数?

c++ - std::copy_n 中的执行策略的真正含义是什么?

C++ 重新解释_cast

android - 是否可以在 C++ 中创建控件并在 Java Activity 中使用?

c++ - 获取 c 数组上 begin 的返回类型

c++ - Fork Direct Show 三通过滤器