c++ - 使用 substr 时出错

标签 c++ string

我正在尝试编写一个函数来删除字符串开头和结尾的空格,但我一直收到错误

error C3867: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::length': function call missing argument list;
use '&std::basic_string<char,std::char_traits<char>,std::allocator<char>>::length' to create a pointer to member"

这是我的源代码

string trim(string str)
{
    int i = 0;
    for (char c : str)
    {
        if (!isspace(c))
            break;
        i++;
    }

    string trimmed = str.substr(i, (str.length-i));

    i = 0;
    for (char c : str)
    {
        if (isspace(c))
            break;
        i++;
    }

    trimmed = trimmed.substr(0, i);
    return trimmed;
}

怎么了?

最佳答案

代替

string trimmed = str.substr(i, (str.length-i));

使用

string trimmed = str.substr(i, (str.length()-i));

length()它是一个函数,而不是一个成员。这在其他语言中的处理方式不同。

请注意 size()length() 的同义词。

关于c++ - 使用 substr 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371603/

相关文章:

C++ UBSAN 使用派生对象产生误报

c++ - 请需要帮助 C++,使用 bool 等

python - 将字符串转换为元组

JavaScript : How do you replace all the characters in the string with space?

c++ - cin >> 输入字符串时双循环

c++ - 奇异运算符——它们为什么有用?

c++ - "Slowing"输出

regex - 使用正则表达式来验证字符串

java - JNI 字符串获取额外字符

c++ - 如何从 std::string_view 正确创建 std::string?