将字符串中的第一个字母转换为大写字母
Convert first letter in string to uppercase
我有一个字符串:"apple"
。如何仅将第一个字符转换为大写并获得"Apple"
形式的新字符串?
我也可以有一个多字节字符的字符串
如果字符串的第一个字符是多字节字符怎么办?
string str = "something";
str[0] = toupper(str[0]);
这就是你所需要做的。
就像Carneigie说的,
string str = "something";
str[0] = toupper(str[0]);
,但也要记住:
#include <string>
#include <cctype>
一直往上
我不能使用str[0]因为,我可以使用具有多字节字符的字符串
我不知道任何CRT实现支持非ascii字符分类和转换。如果你想支持Unicode,那么一切都要复杂得多,因为"将第一个字符转换为大写"在其他语言中可能没有意义。您必须使用由专家编写的Unicode库。
为了说明它有多复杂,考虑以下英语中的情况。将三个码点序列'file'(使用f-i连接)转换为将第一个码点分成两个独立的字母,从而产生'file'。请注意,用于进行大小写分类和转换的标准C/c++接口没有考虑到这些情况,因此甚至不可能实现它们以正确支持Unicode。#include <iostream>
using namespace std;
void capitalize (string &s)
{
bool cap = true;
for(unsigned int i = 0; i <= s.length(); i++)
{
if (isalpha(s[i]) && cap == true)
{
s[i] = toupper(s[i]);
cap = false;
}
else if (isspace(s[i]))
{
cap = true;
}
}
}
(仅适用于'ASCII'字符)
std::wstring s = L"apple";
if(islower(s.at(0) <= 'z' ? s.at(0) : 'A'))
s[0] += 'A' - 'a';
或者,如果你觉得很花哨,想折磨你的代码的未来读者:
std::wstringstream wss;
wss << std::uppercase << s[0]
<< std::nouppercase << s.substr(1);
wss >> s;
相关文章:
- 将数字转换为字母(例如:123 转换为一二三)
- 如何在 c++ 中将所有大写字母转换为字符串中的小写字母,反之亦然?
- 大写字母
- 将字符串中的 int 转换为字母;
- 字符数组[]中的小写大写字母C++通过指针
- 如何在德语大写字母 Ä, Ö, Ü, ẞ 上正确应用 C++
- 删除 C 字符串中的大写字母
- 如何检查包含 utf8 文本的 std::string 在 Windows 中是否以大写字母开头?
- 正则表达式表示非连续大写字母和小写字母
- C++函数来检查 char 是否是大写字母,并且不计算给定字符串中的大写字母
- 将整数转换为字母字符
- 将大写字母(从 cin 读取)更改为小写
- 如何验证小写和大写字母
- opencv :无法通过等待键读取大写字母
- 降低字符串字符,并在转换的大写字母前添加一个_
- 接收字符串,检查大写字母
- 转换大写和小写字母
- 代码在前面有元音时不会将大写字母转换为小写字母
- 将字符串中的第一个字母转换为大写字母
- 使用 std::transform 将字符串转换为所有大写字母