【发布时间】:2020-11-10 06:46:51
【问题描述】:
小写字符串最直观的方法是循环遍历它并降低每个字符:
do {
*Str = tolower(*Str);
} while (*++Str);
但是,就像memcpy() 比在 for 循环中复制每个字节更快一样,有没有更快的方法在 C 中将字符串小写?就像我可以使用按位魔法或其他东西一次降低多个字符吗?
【问题讨论】:
-
您可以尝试对其进行矢量化或并行化,但最好提供更多信息来说明为什么循环对于您的用例而言太慢。例如,您的输入有多大?
-
您有性能问题吗?除非它是您程序中确认的热点,否则我会坚持这样做。
-
没有更好的标准 C 方法。可能会有特定于实现的扩展。
-
你知道第一个字符不会小写吗?它只适用于单字节字符集?
-
@Barmar 这不是重复的。我要求的是更快的方式,而不是a的方式。