繁体   English   中英

C ++ substr方法-“在非成员函数中无效使用'this'”

[英]C++ substr method - “invalid use of ‘this’ in non-member function”

我试图编译以下代码

std::string key = "DISTRIB_DESCRIPTION=";
std::cout << "last five characters: " << key.substr(this.end()-5) << '\n';

编译器说

error: invalid use of ‘this’ in non-member function
std::cout << "last five characters: " << key.substr(this.end()-5) << '\n';
                                                   ^

substrstd::string的“公共成员函数”,为什么不能使用this

我知道我可以再次引用key代替this ,但是我的原始代码是

std::cout << "Description: " << line.substr(found+key.length()+1).substr(this.begin(),this.length()-1) << '\n';

substr的第二种用法中,字符串没有名称,因此引用它的唯一方法是this 我用

std::cout << "Description: " << line.substr(found+key.length()+1,line.length()-found-key.length()-2) << '\n';

但是我现在很好奇为什么this行不通。

仅当您将代码作为类的非静态方法的一部分编写时, this才可用。 在您的特定情况下,似乎很明显你, this应该是指key ,但是编译器认为没有理由。

另外,string.substr()取一个整数,指示开始位置。 string.end()返回一个迭代器,该迭代器将不起作用。 您可能想在这里执行的是调用string.length()。

只需将第一段代码替换为:

std::cout << "last five characters: " << key.substr(key.length()-5) << '\n';

而且你应该没事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM