将大写更改为小写可以缩短字符串的长度吗?将大写更改为小写可以缩短字符串的长度吗?
void lower(char *s)
{
int i;
for (i=0;i<strlen(s);i++)
if(s[i])>='A' && s[i]<='Z')
s[i]-=('A'-'a');
}
将大写更改为小写可以缩短字符串的长度吗?将大写更改为小写可以缩短字符串的长度吗?
void lower(char *s)
{
int i;
for (i=0;i<strlen(s);i++)
if(s[i])>='A' && s[i]<='Z')
s[i]-=('A'-'a');
}
如果您只是将另一个字符替换为另一个字符,与您一样,则生成的字符串仍然具有相同的大小。类型char
总是被定义为C或C++中的一个字节。
因为你在ASCII工作,不,你显然是做1对1替换。您是否应该更改代码以支持UTF-8:也许。
此代码不会更改字符串的长度。但有问题与代码:计算strlen()
每次迭代,这是多余的。 将结果存储在变量中并在循环中使用它
第二点是错误的。 –
@DavidHeffernan,我搞砸了。现在编辑。 – iammilind
如果正确完成 ,更改字符串的大小写可能会更改长度。例如,在德语中,两个字符串“SS” 在某些上下文中变成单字符串“ß”(但不在 其他中,例如:“STRASSE” - >“Straße”,但“GASSE” - > “Gasse”)。正确更改 的情况肯定不是微不足道的,而且非常区分的 具体。标准中没有真正的支持。
您发布不会改变长度,但随后,它从 远远正确的代码:根据编码,它可能会改变一些非字母 字符以及(拼音并不总是连续的),和它会 肯定无法转换一些字母字符,例如'Ä','Ö'和 'Ü'用瑞典语。
这是什么问题?是否将字符串更改为小写字母可以缩短字符串*(通常取决于编码和可能的语言环境),还是缩短字符串的长度? – jalf
你应该使用std :: tolower来代替;与你的代码是很明显的:你不改变它,所以长度保持不变:) – sehe
如果你使用的是C++,那么你应该使用'std :: string','tolower'等,并移动到更高抽象级别。 –