不使用std::string库
时间: 2024-11-13 15:14:52 浏览: 21
如果你想不使用`std::string`库,可以使用原始数组和指针来实现这个功能。以下是一个使用字符数组的简单版本:
```cpp
#include <iostream>
void simplify_number_string(char str[], size_t length) {
for (size_t i = 0; i < length - 2; i++) { // 遍历除最后两个字符外的所有元素
if (isdigit(str[i]) && isdigit(str[i + 1]) && isdigit(str[i + 2])) {
int number = str[i] - '0' * 10 + str[i + 1] - '0' * 10 + str[i + 2] - '0'; // 解析数字
// 更新字符数组
for (size_t j = i; j > i - 3; --j) {
str[j] = str[j + 1];
}
str[i] = '\0'; // 终止字符串
str[i + 2] = '\0'; // 另一侧终止
i += 2; // 跳过已处理的两个字符
}
}
}
int main() {
char input[] = "as-2df0-8we";
size_t input_length = strlen(input);
std::cout << "Original: ";
for (size_t i = 0; i < input_length; ++i) {
std::cout.put(input[i]);
}
std::cout << std::endl;
simplify_number_string(input, input_length);
std::cout << "Simplified: ";
for (size_t i = 0; i < input_length; ++i) {
std::cout.put(input[i]);
}
std::cout << std::endl;
char input2[] = "9-2abc8";
input_length = strlen(input2);
std::cout << "Original: ";
for (size_t i = 0; i < input_length; ++i) {
std::cout.put(input2[i]);
}
std::cout << std::endl;
simplify_number_string(input2, input_length);
std::cout << "Simplified: ";
for (size_t i = 0; i < input_length; ++i) {
std::cout.put(input2[i]);
}
std::cout << std::endl;
return 0;
}
```
这段代码使用字符数组代替了`std::string`,并在内部使用字符指针进行操作。同样,这里也假设输入都是有效的,并没有包含复杂的边界检查。
阅读全文