使用字符串调用方法时出错:类型为'size_t和

Error when calling method with string: invalid initialization of non-const reference of type ‘size_t&

本文关键字:size 类型 调用 字符串 方法 出错      更新时间:2023-10-16

我正在尝试调用该方法

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}’

如果有人有tipp。

谢谢!

这是"腰带和悬架"功能签名,因为它既要求最终指针和字符数。

如果您正在做练习,则需要知道完成它:

  • 通过调用c_str()
  • ,您可以在std::string内获取C字符串的指针
  • 您通过调用size()
  • 获得计数
  • 用最初的指针和尺寸拿到了大小,您可以通过将两者添加在一起来获得最终指针。

请注意,由于大小参考为非const,因此您需要在拨打呼叫之前将其放入变量:

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