用c++输入一串字符,输出大小写互换,标点符号变为空格的逆序
时间: 2024-09-06 19:02:21 浏览: 26
在 C++ 中,你可以通过以下几个步骤来实现这个功能:
1. **读取字符串**:使用 `std::cin` 来从用户那里获取一串字符,包括大小写字母、数字以及标点符号。
```cpp
#include <iostream>
#include <string>
using namespace std;
string inputString;
getline(cin, inputString);
```
2. **转换大小写**:对于每个字符,检查它是否是大写字母,如果是就转成小写,反之亦然。可以借助 `isupper()` 和 `tolower()` 函数,以及 `islower()` 和 `toupper()` 函数来完成。
```cpp
for (char& ch : inputString) {
if (isalpha(ch)) { // 检查是否为字母
if (isupper(ch))
ch = tolower(ch); // 小写
else
ch = toupper(ch); // 大写
} else { // 非字母字符(如标点符号)
ch = ' '; // 替换为空格
}
}
```
3. **逆序字符串**:将处理后的字符串进行反转,C++ 提供了多种方法,这里使用简单的双指针法。
```cpp
size_t start = 0, end = inputString.length() - 1;
while (start < end) {
swap(inputString[start], inputString[end]);
++start;
--end;
}
```
4. **输出结果**:最后输出逆序并替换为空格的大写小写混合字符串。
```cpp
cout << inputString << endl;
```
完整的代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string inputString;
getline(cin, inputString);
for (char& ch : inputString) {
if (isalpha(ch)) {
if (isupper(ch))
ch = tolower(ch);
else
ch = toupper(ch);
} else {
ch = ' ';
}
}
size_t start = 0, end = inputString.length() - 1;
while (start < end) {
swap(inputString[start], inputString[end]);
++start;
--end;
}
cout << inputString << endl;
return 0;
}
```