-2

所以,我刚刚开始这门 C++ 课程,我们现在正在做字符串。对于这个作业,我的教授要我做的是在一个字符串中找到一个字符串并将其打印出来并放在一个位置上。这是我的代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Please enter a phrase: " << endl;
string phrase;
getline(cin, phrase);

cout << "Please enter a possible substring of the phrase: " << endl;
string phrase_2;
getline(cin, phrase_2);

string pos = phrase.substr(phrase_2);
cout << phrase_2 << "was found at position " << pos << endl;
return 0;

}

我已经尝试了几个小时试图让代码打印出位置。这可能是完全错误的,对此我深表歉意,但如果您能帮助我,我将不胜感激。

4

2 回答 2

1

您需要使用std::string::find来获取字符串中子字符串的位置:

以您的代码为例:

int main ()
{
  cout << "Please enter a phrase: \n";
  string phrase;
  getline(cin, phrase);

  cout << "Please enter a possible substring of the phrase: \n";
  string phrase_2;
  getline(cin, phrase_2);

  std::size_t position = phrase.find(phrase_2);
  if (position != std::string::npos)
    std::cout << phrase_2 << " was found at position " << position << "\n";

  return 0;
}
于 2013-09-16T00:57:02.293 回答
0

谷歌是你的朋友...

代替

string pos = phrase.substr(phrase_2);

你应该使用

size_t pos = phrase.find(phrase_2);
于 2013-09-16T00:56:19.357 回答