- 主题:C++标准委员会成立33年憋不出来一个std::string::to_upper()
算不上尸位素餐?
Rust有to_uppercase()
Python有upper()
而C++标准库就这么废,不想自己写就得用第三方库,boost、ICU、POCO 、QtCore 。
--
FROM 171.213.211.*
小写变成大写? 多大点事。标准委员会不会关注这点小东西,太小看人家了。人家干这事相当于原子弹打蚊子。
、
--
修改:zhangxp024 FROM 36.7.227.*
FROM 36.7.227.*
Rust的标准库有 to_uppercase() to_ascii_uppercase() make_ascii_uppercase()
这种才叫标准库。
C++的标准库叫这也没有,那也没有。
【 在 zhangxp024 的大作中提到: 】
: 小写变成大写? 多大点事。标准委员会不会关注这点小东西,太小看人家了。人家干这事相当于原子弹打蚊子。
: 、
--
FROM 171.213.211.*
没这个小东西,众多C++码农也一样写了软件了不是
字符编码库太复杂,交给第三方库也是个好办法
std::codecvt封得可能没这些第三方库好,被废了
--
FROM 221.218.167.*
字符这个事情,对于C++标准委员会而言确实太复杂了,33年完全不够,再给他们66年吧,相信他们最后一定能搞好这个标准库的。
【 在 z16166 的大作中提到: 】
: 没这个小东西,众多C++码农也一样写了软件了不是
: 字符编码库太复杂,交给第三方库也是个好办法
: std::codecvt封得可能没这些第三方库好,被废了
--
FROM 171.213.211.*
想想ICU这些开发了多少年了
假如让你去主持这个工作(可能是业余的),你有多大的把握搞得比现有的好
【 在 poocp 的大作中提到: 】
: 字符这个事情,对于C++标准委员会而言确实太复杂了,33年完全不够,再给他们66年吧,相信他们最后一定能搞好这个标准库的。
:
--
FROM 221.218.167.*
话说。别看这个函数听起来很简单。。
如果 str 是 unicode 字符串,要不要考虑国际化?
比如有些东欧和希腊使用的拉丁文字也有大小写的。
【 在 poocp 的大作中提到: 】
: 算不上尸位素餐?
: Rust有to_uppercase()
: Python有upper()
: ...................
--
FROM 110.84.123.*
#include <iostream>
#include <cctype> // 包含 toupper 函数
int main() {
char ch = 'a';
std::cout << "Original character: " << ch << std::endl;
ch = toupper(ch); // 将小写字母转换为大写字母
std::cout << "Converted character: " << ch << std::endl;
return 0;
}
要让string整个转化成大写,那就自己遍历一遍,问题不大。
【 在 poocp 的大作中提到: 】
: Rust的标准库有 to_uppercase() to_ascii_uppercase() make_ascii_uppercase()
: 这种才叫标准库。
: C++的标准库叫这也没有,那也没有。
: ...................
--
修改:zhangxp024 FROM 36.7.227.*
FROM 36.7.227.*
现在流行这种:
std::transform(s.begin(), s.end(), s.begin(), [](wchar_t c) { return towlower(c); });
但对于Windows上的UTF-16 surrogate pair,这个实现是错误的。单单英文字母没问题。
【 在 zhangxp024 的大作中提到: 】
: #include <iostream>
: #include <cctype> // 包含 toupper 函数
: int main() {
: ...................
--
FROM 221.218.167.*
看二楼,Rust的标准库这两种转为大写全都支持。
【 在 hgoldfish 的大作中提到: 】
: 话说。别看这个函数听起来很简单。。
: 如果 str 是 unicode 字符串,要不要考虑国际化?
: 比如有些东欧和希腊使用的拉丁文字也有大小写的。
: ...................
--
FROM 171.213.211.*