给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。 你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式 输入的第一行包含一个字符串 S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为 0时表示大小写不敏感,当数字为 1时表示大小写敏感。 第三行包含一个整数 n,表示给出的文字的行数。 接下来 n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 输出格式 输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串 S的行。用c++实现
时间: 2024-02-28 15:55:00 浏览: 26
好的,以下是一个C++的程序实现,可以解决你的问题:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string s;
cin >> s;
int case_sensitive;
cin >> case_sensitive;
int n;
cin >> n;
vector<string> lines;
for (int i = 0; i < n; i++) {
string line;
cin >> line;
if (!case_sensitive) {
transform(s.begin(), s.end(), s.begin(), [](unsigned char c){ return tolower(c); });
transform(line.begin(), line.end(), line.begin(), [](unsigned char c){ return tolower(c); });
}
if (line.find(s) != string::npos) {
lines.push_back(line);
}
}
for (const auto& line : lines) {
cout << line << endl;
}
return 0;
}
```
这个程序首先读入字符串 `s`,大小写敏感的选项 `case_sensitive`,以及文字的行数 `n`。然后,它遍历每一行文字,如果字符串 `s` 在这一行中出现,就把这一行加入到结果列表中。最后,程序按照结果列表中的顺序输出包含字符串 `s` 的行。如果大小写敏感的选项被打开,程序会区分大小写;否则,程序会把所有字母都转化为小写字母,从而忽略大小写。
希望这个程序能够解决你的问题。