帮我用c++写个代码:输入若干字符串,去掉语句中的标点符号、连字符等,还有去掉所有格,并按空白进行单词分割
时间: 2023-06-14 07:07:24 浏览: 136
以下是一个简单的 C++ 代码示例,可以实现输入若干字符串,去掉语句中的标点符号、连字符等,还有去掉所有格,并按空白进行单词分割:
```c++
#include <iostream>
#include <string>
#include <algorithm>
bool is_punct(char c) {
return std::ispunct(c) || std::isspace(c) || c == '\'' || c == '-';
}
std::string remove_punct(const std::string& str) {
std::string result;
std::remove_copy_if(str.begin(), str.end(), std::back_inserter(result), is_punct);
return result;
}
int main() {
std::string input_str;
while (std::getline(std::cin, input_str)) {
std::string processed_str = remove_punct(input_str);
std::string word;
for (std::string::iterator it = processed_str.begin(); it != processed_str.end(); ++it) {
if (std::isspace(*it)) {
if (!word.empty()) {
std::cout << word << " ";
word.clear();
}
} else {
word += std::tolower(*it);
}
}
if (!word.empty()) {
std::cout << word << std::endl;
}
}
return 0;
}
```
首先定义了一个 `is_punct` 函数,用于判断字符是否为标点符号、连字符等。然后定义了一个 `remove_punct` 函数,用于去掉字符串中的标点符号、连字符等。
在主函数中,使用 `std::getline` 从标准输入流中读取输入的字符串,然后调用 `remove_punct` 函数进行处理。接着使用一个循环遍历处理后的字符串,将单词按空白进行分割,并输出到标准输出流中。
注意,在输出单词时,需要将所有字母转换为小写字母,以免大小写造成的单词不匹配问题。
阅读全文