将大写字母改为小写字母可以缩短字符串的长度吗?

时间:2011-10-03 08:41:50

标签: c++

将大写字母改为小写字母会缩短字符串的长度吗?

void lower(char *s)
{
  int i;
  for (i=0;i<strlen(s);i++)
     if(s[i])>='A' && s[i]<='Z')
       s[i]-=('A'-'a');
}

5 个答案:

答案 0 :(得分:2)

不,它不应该。

其他一些注意事项:

  1. 您在循环的每次迭代中计算strlen,尝试将其保存到变量
  2. 您认为字符串正确地以空值终止;如果不是
  3. ,你会超支

答案 1 :(得分:2)

由于您使用的是ASCII,不,您显然正在进行1对1替换。您是否应该更改代码以支持UTF-8:可能。

答案 2 :(得分:1)

如果您只是将一个字符替换为另一个字符,那么结果字符串仍将具有相同的大小。类型char始终定义为C或C ++中的一个字节。

答案 3 :(得分:0)

更改字符串的大小写可能会改变长度(如果已完成) 正确。例如,在德语中,两个字符串“SS”将 在某些情况下成为单个字符串“ß”(但不在 其他,例如:“STRASSE” - &gt; “Straße”,但“GASSE” - &gt;“Gasse”)。更改 正确的案例肯定是非平凡的,而且非常本地化 具体。标准中并没有真正支持它。

你发布的代码不会改变长度,但是,它远非如此 正确:根据编码,它可能会改变一些非字母 字符也是(字母表并不总是连续的),它会 肯定无法转换一些字母字符,例如'Ä','Ö'和 瑞典语'Ü'。

答案 4 :(得分:-1)

此代码不会更改字符串的长度。但是代码中存在问题:每次迭代都会计算strlen(),这是多余的。     将结果存储在变量中并在循环中使用