替换字符串中的空格
1.条件描述:
- 给出一个字符串“We are happy”。
2.问题:
- 将字符串中的 ’ ’ (空格)替换为 “%20” 。
3.解题思路:
4.解题过程:
void NiuKe::replaceSpaceInStr(char *pStr)
{
int iNewLength = 0, iOldLength = 0;
while (pStr[iOldLength] != '\0') //计算长度直到结束
{
if(' ' == pStr[iOldLength])
{
iNewLength += 2;
}
++iNewLength, ++iOldLength; //计算字符串的长度
}
++iNewLength; //给'\0'结束字符串一个占位
pStr[iNewLength--] = '\0';
while (iNewLength > iOldLength && iOldLength > 0)
{
if(' ' == pStr[iOldLength])
{
pStr[iNewLength--] = '0'; //从尾至首进行字符串替换
pStr[iNewLength--] = '2';
pStr[iNewLength--] = '%';
}
else
{
pStr[iNewLength--] = pStr[iOldLength]; //非空格字符,直接进行原字符串替换
}
--iOldLength;
}
}
int main()
{
NiuKe NiuTest;
char pStr[] = "We are happy"; //给定字符串足够的长度,防止出现越界现象
NiuTest.replaceSpaceInStr(pStr);
cout << pStr << endl;
return 0;
}
5.题后小结:
- 在字符串操作中,需要将’\0’空字符考虑到其中。
6.知识点延伸:
'\0'为空字符(转义字符),ASCII码为0,字符串结束符。 字符常量占一个字节的内存空间 'a'在内存中占一个字节 (a),"a"在内存中占两个字节 (a, \0)。