同事原先找了个:
std::string trim(string& str)
{
string::size_type pos = str.find_last_not_of(' ');
if(pos != string::npos)
{
str.erase(pos + 1);
pos = str.find_first_not_of(' ');
if(pos != string::npos) str.erase(0, pos);
}
else
str.erase(str.begin(), str.end());
return str;
}
不过还有更精巧的实现,我找到如下的:
// trim from start
static inline std::string <rim(std::string &s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
return s;
}
// trim from end
static inline std::string &rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
return s;
}
static inline std::string &trim(std::string &s) {
return ltrim(rtrim(s));
}
分享到:
相关推荐
本文实例讲述了c++ String去除头尾空格的方法,分享给大家供大家参考。具体实现方法如下: 实现该功能可使用string的find_first_not_of,和find_last_not_of方法,具体实现带如下: 代码如下:#include #include ...
通过以上示例可以看出,在C++中使用`std::string`类的成员函数可以很方便地实现字符串的空格去除操作。这种方法不仅简洁高效,而且易于理解和维护。此外,结合实际应用场景,可以进一步扩展这些基本功能,实现更复杂...
- `std::string getSection(const std::string& section, const std::string& key)`:获取指定节下的键值对,若不存在则返回空字符串。 4. **异常处理**: - 在读写过程中,应处理可能出现的文件未找到、权限不足...
在C编程语言中,"右...通过对“对齐.cpp”文件的学习,你可以深入理解C语言或C++中的格式化输出,以及如何通过`printf`或`std::cout`实现字符串的右对齐。这将有助于你在编写涉及输出格式控制的程序时更加得心应手。
4. **按逗号分隔**:对于逗号分隔的数据,我们可以使用std::getline()结合不同的分隔符,或者使用std::stringstream和std::stringstream的成员函数>>。例如: ```cpp std::istringstream commaIss(line); std::...
在给定的标题和描述中,我们主要讨论了如何使用`std::string`以及相关的C++标准库函数来处理文本数据,特别是对一个包含用户名和电话号码的文件进行排序和去重。 1. **文件I/O**: - 使用`std::ifstream`从文件中...
std::string str = "有空格的字符串"; for (size_t i = 0; i (); ) { if (str[i] == ' ') { str.erase(i, 1); } else { ++i; } } ``` 2. **使用`std::replace`函数**: `std::replace`函数可以替换字符串...
`std::stoi()`会跳过前导空格,并且可以从第一个非空字符开始转换。如果遇到非数字字符,或者数字超出了整数范围,它会抛出`std::invalid_argument`或`std::out_of_range`异常。 2. `std::stol()`, `std::stoul()`,...
`std::unique` 结合 `std::sort` 可以去除重复字符。 **示例代码**: ```cpp std::string s = "abacabadabacaba"; std::sort(s.begin(), s.end()); s.erase(std::unique(s.begin(), s.end()), s.end()); ``` **...
虽然`substr()`函数是处理字符串的一个强大工具,但它本身并不支持直接去除前后空格的功能。本文将详细介绍如何结合其他C++库函数和方法,如`ltrim()`和`rtrim()`,来有效地去除字符串中的前后空格。 #### 二、基本...
另外,`std::cin`也可以配合提取运算符`>>`读取字符串,但这种方式会跳过空格和制表符,所以通常不适用于读取一整行。 除了I/O操作,`std::string`类还提供了许多其他有用的函数。例如,`size()`用于获取字符串长度...
在C++编程语言中,`std::string`是C++标准库中用于处理文本字符串的容器,它在 `<string>` 头文件中定义。`std::string` 类型提供了丰富的功能,使得处理字符串变得非常方便。这个压缩包“每天学点C++(C++实例教程...
一个常用的方法是使用`std::getline`配合`std::stringstream`来分割由特定分隔符(如逗号、空格等)分隔的字符串。例如: ```cpp std::string line; while (std::getline(inputStream, line)) { std::stringstream...
当找不到空格时,`find`会返回`std::string::npos`,此时`line`剩下的部分就是最后一个`token`。 然而,如果我们要处理的分隔符不止一种,或者需要更复杂的逻辑,比如保留分隔符,那么可以自定义一个函数。`spilt....
- 处理节:遇到节名时,创建一个新的结构(如`std::map<std::string, std::map<std::string, std::string>>`)来保存该节的键值对。 - 处理键值对:在对应的节中添加键值对,注意处理特殊字符和空格。 - 关闭文件...
2. **`std::stringstream`**: 使用`std::stringstream`,我们可以将任何类型的数值写入流,然后将其作为字符串读取。 ```cpp int num = 123; std::stringstream ss; ss ; std::string str; ss >> str; ``` 3...
如果数据格式固定,比如每个字段之间都有空格分隔,可以考虑使用`std::istringstream`和`std::getline()`配合读取: ```cpp int field1, field2, field3; std::getline(ss, token, ' '); // 读取第一个字段,假设它...
4. **使用`std::stringstream`**:另一种高级方法是使用`std::stringstream`,它可以像处理流一样处理字符串。 ```cpp #include #include int main() { std::stringstream ss; ss ; std::string result = ss....
要删除字符串中的空格,我们可以使用`std::string`的`erase`函数。`erase`函数允许我们删除指定位置或范围内的字符。对于连续的空格,我们需要遍历整个字符串,检查每个字符是否为空格,如果是,则将其删除。 以下...
总的来说,`std::string`是C++中强大且易用的字符串处理工具,掌握其用法和特性对提升编程效率有很大帮助。通过深入学习提供的资料,你将能够更好地理解和运用`std::string`,处理各种复杂的字符串问题。