查找字符串的子字符串

时间:2013-09-16 00:41:32

标签: c++

所以,我刚刚开始这个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;

}

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

Google is your friend ...

而不是

string pos = phrase.substr(phrase_2);

你应该使用

size_t pos = phrase.find(phrase_2);