我有一个类型为std :: string的变量。我想检查它是否包含某个std :: string。我该怎么办?
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
string str;
cin >> n;
string str1 = "not";
while(n--)
{
cin >> str;
cout << "2";
if(str.size() >= str1.size())
{
if (str.find(str1) != string::npos)
{
cout << "1";
}
else
cout << "2";
}
}
return 0;
}
输入:
2
i do not have any fancy quotes
when nothing goes right go left
输出:无输出
答案 0 :(得分:0)
从输入流中读取一个整数后,应该在从输入流中读取任何字符串之前使用cin.ignore();
。
cin.ignore();
忽略“换行”字符。
此外,您无法读取包含cin >> str;
的空格的行。您应该使用getline(cin, str);
来阅读一行。
您修改的代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
string str;
cin >> n;
cin.ignore();
string str1 = "not";
while (n--) {
getline(cin, str);
if (str.find(str1) != string::npos)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
输入:
7
a
bbbbbbbbbb
not bad
not good
not not not not
NOT
aaaaaanotbbb
输出:
NO
NO
YES
YES
YES
NO
YES