C++怎么把字符串转为大写
时间: 2024-09-30 08:11:06 浏览: 45
在C++中,你可以使用标准库里的`std::toupper`函数或者`std::transform`配合`std:: toupper`将字符串转换为大写。以下是两种方法:
1. **使用`toupper`函数逐字符转换**:
```cpp
#include <cctype>
#include <string>
std::string to_upper(const std::string& str) {
std::string result = str;
for (char& c : result) {
c = std::toupper(c);
}
return result;
}
```
2. **使用`std::transform`和范围遍历**:
```cpp
#include <algorithm>
#include <cctype>
#include <string>
std::string to_upper(const std::string& str) {
std::string result = str;
std::transform(result.begin(), result.end(), result.begin(), ::toupper);
return result;
}
```
这两种方法都会遍历输入的字符串,将其每个字符转换成大写。
相关问题
c++将字符串中的小写字母转为大写字母
在C++中,你可以使用标准库中的`std::transform`函数结合`std::toupper`函数来将字符串中的小写字母转换成大写字母。这里是一个简单的例子:
```cpp
#include <algorithm> // 包含transform头文件
#include <cctype> // 包含toupper函数
#include <string>
void toUpper(std::string& str) {
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
}
// 使用示例
int main() {
std::string input = "Hello, World!";
toUpper(input);
std::cout << input; // 输出 "HELLO, WORLD!"
return 0;
}
```
这个函数`toUpper`接受一个字符串引用,并通过`std::transform`迭代器操作将每个字符转换为其大写形式。
客户端发送一串小写字符串给服务端,服务端接受后将字符串转为大写,然后发给客户端,写出这个过程的C++的程序,包括客户端的程序和服务端的程序
以下是基于TCP的C语言客户端和服务端代码,实现了将小写字符串转换为大写字符串的功能。
客户端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUF_SIZE 1024
void error_handling(char *message);
int main(int argc, char *argv[]) {
int sock;
struct sockaddr_in serv_addr;
char message[BUF_SIZE];
if (argc != 3) {
printf("Usage: %s <IP> <port>\n", argv[0]);
exit(1);
}
sock = socket(PF_INET, SOCK_STREAM, 0);
if (sock == -1) {
error_handling("socket() error");
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
serv_addr.sin_port = htons(atoi(argv[2]));
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
error_handling("connect() error");
}
printf("Input lowercase string: ");
fgets(message, BUF_SIZE, stdin);
write(sock, message, strlen(message));
int str_len = read(sock, message, BUF_SIZE-1);
if (str_len == -1) {
error_handling("read() error");
}
printf("Uppercase string: %s", message);
close(sock);
return 0;
}
void error_handling(char *message) {
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
```
服务端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ctype.h>
#define BUF_SIZE 1024
void error_handling(char *message);
int main(int argc, char *argv[]) {
int serv_sock, clnt_sock;
struct sockaddr_in serv_addr, clnt_addr;
socklen_t clnt_addr_size;
char message[BUF_SIZE];
if (argc != 2) {
printf("Usage: %s <port>\n", argv[0]);
exit(1);
}
serv_sock = socket(PF_INET, SOCK_STREAM, 0);
if (serv_sock == -1) {
error_handling("socket() error");
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(atoi(argv[1]));
if (bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
error_handling("bind() error");
}
if (listen(serv_sock, 5) == -1) {
error_handling("listen() error");
}
clnt_addr_size = sizeof(clnt_addr);
clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);
if (clnt_sock == -1) {
error_handling("accept() error");
}
int str_len = read(clnt_sock, message, BUF_SIZE);
if (str_len == -1) {
error_handling("read() error");
}
for (int i = 0; i < str_len; ++i) {
message[i] = toupper(message[i]);
}
write(clnt_sock, message, str_len);
close(clnt_sock);
close(serv_sock);
return 0;
}
void error_handling(char *message) {
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
```
阅读全文