头文件replaceBlank构建一个类,类中包括替换空格的函数
class Solution{
public:
void replaceSpace(char *str, int length) {
if (str == nullptr || length <= 0)
return;
//统计字符串的长度和空格个数
int originalLength = 0;
int numberOfBlank = 0;
for (int i = 0; str[i] != '\0'; i++)
{
originalLength++;
if (str[i] == ' ')
numberOfBlank++;
}
//计算新的字符串长度
int newLength = originalLength + numberOfBlank * 2;
int indexNew = newLength;
for (int indexOriginal = originalLength; indexOriginal >= 0 && indexNew > indexOriginal;
indexOriginal--)
{
if (str[indexOriginal] == ' ')
{
str[indexNew--] = '0';
str[indexNew--] = '2';
str[indexNew--] = '%'; //注意索引要indexNew--
}
else
str[indexNew--] = str[indexOriginal];
}
}
};
测试主函数如下
#include<iostream>
#include<string>
#include"replaceBlank.h"
using namespace std;
int main()
{
string s;
char* s_str = new char[100];
//cin不接受空格,将按空格切成若干段
getline(cin, s);
s_str = const_cast<char*>(s.data());//将string类型转换成char*类型保存
Solution cs;
cs.replaceSpace(s_str, 100);
cout << s_str;
delete[] s_str;
return 0;
}
运行结果