使用substr的错误

Error using substr

本文关键字:错误 substr 使用      更新时间:2023-10-16

我正在尝试编写一个从字符串的开始和结尾删除空格的函数,而我继续遇到错误

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()的同义词。