编写去除字符串两端空格的函数C++
时间: 2023-06-11 13:04:24 浏览: 109
Sure, 下面是一个简单的去除字符串两端空格的函数C代码:
```
#include <stdio.h>
#include <string.h>
void trim(char *str) {
int len = strlen(str);
int start = 0, end = len - 1;
while (isspace(str[start]) && start < end) {
start++;
}
while (isspace(str[end]) && start < end) {
end--;
}
int i;
for (i = start; i <= end; i++) {
str[i-start] = str[i];
}
str[i-start] = '\0';
}
int main() {
char str[] = " hello world ";
trim(str);
printf("[%s]\n", str);
return 0;
}
```
这个函数基本思路就是依次遍历字符串开始和末尾的位置,找到第一个非空格字符和最后一个非空格字符的位置,然后将这中间的部分复制到新的字符串中。
你可以使用该代码作为参考,在实际的工作中进行使用。
相关问题
编写一个C++函数,该函数接收一个字符串作为输入参数,并负责去除字符串首尾的空格字符,最终返回处理后不再包含首尾空格的字符串。函数输入参数不修改,函数返回的字符串位于堆内存。
以下是一个C++函数,它可以接收一个字符串作为输入参数,去除字符串首尾的空格字符,并返回处理后的字符串。返回的字符串位于堆内存中:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
char* trimWhitespace(const std::string& input) {
// 找到第一个非空格字符的位置
size_t start = input.find_first_not_of(" \t\n\r\f\v");
// 如果字符串全是空格,返回空字符串
if (start == std::string::npos) {
char* result = new char[1];
result[0] = '\0';
return result;
}
// 找到最后一个非空格字符的位置
size_t end = input.find_last_not_of(" \t\n\r\f\v");
// 计算去空格后的字符串长度
size_t length = end - start + 1;
// 分配内存并复制去空格后的字符串
char* result = new char[length + 1];
input.copy(result, length, start);
result[length] = '\0';
return result;
}
int main() {
std::string test = " Hello, World! ";
char* trimmed = trimWhitespace(test);
std::cout << "\"" << trimmed << "\"" << std::endl;
delete[] trimmed; // 记得释放动态分配的内存
return 0;
}
```
这个函数的工作原理如下:
1. 使用 `find_first_not_of` 找到第一个非空格字符的位置。
2. 如果整个字符串都是空格,返回一个空字符串。
3. 使用 `find_last_not_of` 找到最后一个非空格字符的位置。
4. 计算去空格后的字符串长度。
5. 分配足够的内存来存储结果字符串。
6. 使用 `copy` 方法将去空格后的字符串复制到新分配的内存中。
7. 添加字符串结束符 '\0'。
8. 返回指向新字符串的指针。
注意,这个函数返回的字符串是在堆内存中分配的,因此在不需要时应该使用 `delete[]` 来释放内存。
用string实现删除字符串两端的空格的c++代码
在C++中,你可以使用`std::string`的`erase`函数配合`find`函数来删除字符串两端的空格。以下是一个简单的示例:
```cpp
#include <iostream>
#include <string>
// 函数定义,删除字符串两端的空格
std::string removeSpacesAtEnd(std::string str) {
// 查找左边的第一个非空字符的位置
size_t start = str.find_first_not_of(" ");
// 查找右边的第一个空格的位置,如果没有空格则str.size()作为结束索引
size_t end = str.rfind(" ") + 1;
if (end == str.size())
end = str.size(); // 如果末尾没有空格,则保持原样
// 仅保留有效部分并返回
return str.substr(start, end - start);
}
int main() {
std::string input = " Hello, World! ";
std::string result = removeSpacesAtEnd(input);
std::cout << "Original string: " << input << "\n";
std::cout << "String with spaces removed: " << result << "\n";
return 0;
}
```
阅读全文
相关推荐














