CSP-201409-3-字符串匹配
关键点:<string>
库函数的使用
-
length()
或size()
: 返回字符串的长度。 -
empty()
: 检查字符串是否为空。 -
append()
或+=
: 向字符串的末尾添加字符或另一个字符串。 -
insert()
在字符串的指定位置插入另一个字符串或字符。
std::string str = "HelloWorld";
str.insert(5, " "); // 插入空格在位置5,结果:"Hello World"
erase()
从字符串中删除一段子字符串。
std::string str = "Hello World";
str.erase(5, 6); // 从位置5开始删除6个字符,结果:"Hello"
replace()
替换字符串中的一段子字符串。
std::string str = "Hello World";
str.replace(6, 5, "There"); // 从位置6开始替换5个字符,结果:"Hello There"
find()
在字符串中查找另一个字符串或字符的第一次出现。
std::string str = "Hello World";
size_t pos = str.find("World"); // 返回"World"首次出现的位置,结果:6
if (pos != std::string::npos) {// 找到了
}
substr()
从字符串中提取一段子字符串。
std::string str = "Hello World";
std::string sub = str.substr(6, 5); // 从位置6开始提取5个字符,结果:"World"
compare()
比较两个字符串。
std::string str1 = "Hello";
std::string str2 = "World";
int result = str1.compare(str2); // 比较两个字符串
if (result == 0) {// 字符串相等
} else if (result < 0) {// str1 小于 str2
} else {// str1 大于 str2
}
clear()
: 清空字符串,等同于删除所有字符。
解题代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;string Trans2Small(string str) {int delta = 'A' - 'a';for (auto& it : str) {if (it >= 'A' && it < 'Z') // 大写转小写{it -= delta;}}return str;
}int main()
{string subStr;cin >> subStr;bool sensitive; cin >> sensitive;int n;cin >> n;for (int i = 0; i < n; i++){string str;cin >> str;if (!sensitive) // 大小写不敏感{string subStrTemp = Trans2Small(subStr);string strTemp = Trans2Small(str);if (strTemp.find(subStrTemp) != -1){cout << str << endl;}}else // 大小写敏感{if (str.find(subStr) != -1){cout << str << endl;}}}return 0;
}