我正在尝试运行的代码:

std::string genBlankName(std::vector<Post> &posts)
{
    std::string baseName = "New Post ";
    int postNum = 1;

    for (std::vector<Post>::iterator currentPost = posts.begin(); currentPost != posts.end(); currentPost++)
    {
        if (posts[currentPost].name.substr(0, baseName.length()) == baseName &&
            utils::is_num(posts[currentPost].name.substr(baseName.length(), std::string::npos)) &&
            utils::to_int(posts[currentPost].name.substr(baseName.length(), std::string::npos)) > postNum)
        {
            postNum = utils::to_int(posts[currentPost].name.substr(baseName.length(), std::string::npos));
        }
    }

    return baseName + utils::to_string(postNum);
}

我得到的错误是:



抱歉,我不多说,但我认为这是很普通的事情,我只是不知道自己是个小子。我会用谷歌搜索它,但似乎没有什么问题太笼统,因为我怀疑这对我的实现或类似问题来说更多是问题。

最佳答案

下标需要使用索引,而您正在使用迭代器。

您根本不需要下标,只需取消引用迭代器即可:

currentPost->name.substr(0, baseName.length())

… 等等。

10-04 10:01