使用字符串调用方法时出错:类型'size_t&的非常量引用的无效初始化

亚历克斯

我正在尝试调用该方法

bool someMethod(char const *    begin, char const *     end, size_t & count);

只有一个字符串。

std::string sString = "test";
if (someMethod(....)) {
   std::cout << "working!";
}

但是我不知道如何正确地转换字符串。

我尝试了以下方法:

if (someMethod(&sString[0], &sString[sString.length() - 1], sString.length()) {
    std::cout << "working!";
}

但是我收到以下消息:

error: invalid initialization of non-const reference of type ‘size_t& {aka long unsigned int&}’ from an rvalue of type ‘std::basic_string<char>::size_type {aka long unsigned int}’

如果有人给小费,那就太棒了。

谢谢!

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

这是一个“皮带和吊带”功能签名,因为它同时要求结束指针和字符计数。

如果您将其作为练习来完成,那么以下是您需要了解的内容:

  • 您可以std::string通过调用获取指向C字符串的指针c_str()
  • 您可以通过致电获得计数 size()
  • 有了初始指针和大小,就可以通过将两者加在一起来获得结束指针。

请注意,由于大小引用是非常量的,因此您需要在进行调用之前将其放入变量中:

size_t count = s.size();
const char *start = s.c_str();
someFunction(start, start+count, count);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对引用使用多态。非常量引用的初始化无效

C ++-类型的非常量引用的无效初始化

类型的非常量引用的无效初始化

类型的非常量引用的无效初始化中的错误

c ++:“类型为“列表*”的临时类型的类型为“列表&”的非常量引用无效的初始化”

从类型''的右值对类型''的非常量引用进行了无效的初始化

来自 const char* 类型的临时对象的 cost char*& 类型的非常量引用的无效初始化

类型为std :: _ Bit_rerefence&的非常量引用的无效初始化

类型为'int&'的非常量引用的初始化无效,这是什么原因?

错误:类型'cv :: Mat&'的非常量引用无效的初始化

使用字符串字符数组初始化字符串时出错?

替换/引用字符串常量时出错

“类型为'int'的右值的类型为'int&'的非常量引用的无效初始化”:递归引用传递函数

不使用字符串时,初始化元素不是常量错误

从类型'std :: basic_string <char>的右值对类型'std :: string&的非常量引用进行了无效的初始化

错误:从类型'std :: vector <bool> :: reference {aka std :: _ Bit_reference}'的右值初始化'bool&'类型的非常量引用无效

c#中使用字符串时引用类型和值类型之间的区别

为什么右值引用作为返回类型不能是非常量引用的初始化?

用字符串初始化自己的类型

使用 constexpr 初始化非常量静态字符串

使用非常量引用初始化另一个不同类型的元组元素的元组元素

如何使用构造函数以非常量引用作为参数的私有对象成员初始化对象

使用字符串文字初始化数组时的不同汇编

尝试对空对象引用调用虚拟方法(添加字符串时出错)

从右值无效初始化非常量引用

从右值无效初始化非常量引用

在Typescript中,使用公用字符串字段作为键从Array <T>构造Map <string,T>时出错

初始化向量字符串数组时出错

为什么当你不使用字符串常量初始化数组GCC不给警告?