c++中,输入一段字符大小写互换后输出
时间: 2024-10-27 14:15:31 浏览: 22
在 C++ 中,你可以通过遍历输入字符串并利用 ASCII 码的特性来实现字符大小写的互换。ASCII 码中大写字母通常位于小写字母之后,比如 'A' 对应于 'a' 后面的第 1 的位置。下面是一个简单的示例程序:
```cpp
#include <iostream>
#include <string>
void swap_case(std::string& str) {
for (char& ch : str) {
if ('A' <= ch && ch <= 'Z') { // 如果是大写字母
ch = ch + 32; // 转换成对应的小写字母
} else if ('a' <= ch && ch <= 'z') { // 如果是小写字母
ch = ch - 32; // 转换成对应的大写字母
}
}
}
int main() {
std::string input;
std::cout << "请输入一段字符串:";
getline(std::cin, input); // 使用getline获取包括空格的完整行
swap_case(input);
std::cout << "转换后的字符串是:" << input << std::endl;
return 0;
}
```
当你运行这个程序,并输入一段字符后,它会输出字符大小写互换后的结果。
相关问题
C++,输入一串字符后,将其大小写互换,标点符号改为空格后逆序输出
在C++中,你可以通过以下几个步骤来实现这个功能:
1. **获取用户输入**:首先需要从用户那里获取一串字符串,可以使用`std::getline`函数从标准输入流读取。
```cpp
#include <iostream>
#include <string>
std::string input;
std::getline(std::cin, input);
```
2. **处理大小写字母和标点符号**:接下来遍历字符串,将大写字母转成小写,小写字母转成大写,并替换掉非字母字符(如标点符号)为空格。这可以利用`std::transform`函数配合`isalpha`和`tolower`函数完成。
```cpp
std::string processed = "";
for (char c : input) {
if (std::isalpha(c)) { // 检查是否为字母
processed += std::tolower(c); // 转化为小写
} else {
processed += ' '; // 非字母字符转换为空格
}
}
```
3. **逆序输出**:最后对处理后的字符串进行逆序,可以使用双指针法或者直接调用`std::reverse`函数。
```cpp
processed = std::reverse(processed.begin(), processed.end());
```
4. **打印结果**:
```cpp
std::cout << "处理后的字符串: " << processed << std::endl;
```
完整代码示例:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string input;
std::getline(std::cin, input);
std::string processed = "";
for (char c : input) {
if (std::isalpha(c)) {
processed += std::tolower(c);
} else {
processed += ' ';
}
}
processed = std::reverse(processed.begin(), processed.end());
std::cout << "处理后的字符串: " << processed << std::endl;
return 0;
}
```
用c++输入一串字符,输出大小写互换,标点符号变为空格的逆序
在 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;
}
```
阅读全文