试图在指针类型字符串中找到子字符串 - c ++

Tot*_*oft 0 c++ string

在我学习c ++的过程中,我遇到了一个有趣的情况,我无法找到解决它的方法

我尝试创建一个带有指针符号的字符串类型(在添加"using std :: string;"之后)

但是当我在内部输入一个值之后尝试在其中找到某些东西时,它给了我一个必须是类类型的错误

例:

string *something = new string("Something stringy - std::string");
Run Code Online (Sandbox Code Playgroud)

在那个刺痛中我试着搜索子串"str"

尝试使用此命令时:

cout << "The first occurrence of the substring 'str' in something starts at index " <<  *something.rfind("str", std::distance(begin(*something), end(*something))) << endl << endl << endl;
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

zne*_*eak 6

点运算符优先于解除引用运算符:您要做的事情相当于*(something.rfind(...)).由于something具有指针类型而不是类类型,因此它没有点运算符,并且您收到错误.

你可以使用(*something).rfind或者something->rfind,后者更短,更常见.该->操作是相当于.运营商为指针.