C++去除字符串中存在的空格

本文提供了一个使用 C++ STL 的 std::string 类型实现的函数,用于移除字符串中的所有空白字符。
部署运行你感兴趣的模型镜像

std::string ReplaceBlank(std::string inputStr)

{

    string::iterator it = inputStr.begin();

    while ((it=find(it, inputStr.end(), ' '))!=inputStr.end())

    {

        inputStr.erase(it);

        if (it == inputStr.end())

        {

            break;

        }

    }

    return inputStr;

}

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

C++去除字符串中的多余空格可以通过多种方式实现,具体取决于需求。以下是几种常见的方法: ### 1. 使用双指针法 类似于引用中提到的双指针思想[^1],可以使用双指针来高效地处理字符串中的多余空格问题。这种方法特别适用于去除字符串中间和两端多余的空格。 ```cpp #include <string> using namespace std; string removeExtraSpaces(string s) { int slow = 0; // 慢指针用于构建新字符串 for (int fast = 0; fast < s.size(); fast++) { if (s[fast] != ' ') { // 非空格字符直接复制 if (slow > 0 && s[slow - 1] == ' ') { // 如果前面已经有空格,则插入一个空格 s[slow++] = ' '; } s[slow++] = s[fast]; // 复制当前字符 } } s.resize(slow); // 调整字符串大小 return s; } ``` ### 2. 使用 `std::stringstream` 如果需要更简单的方法,可以借助 `std::stringstream` 来自动处理多余的空格。这种方法会自动跳过所有空格,并将非空字符按顺序读取。 ```cpp #include <sstream> #include <string> using namespace std; string removeExtraSpaces(string s) { stringstream ss(s); string result, word; while (ss >> word) { if (!result.empty()) result += " "; result += word; } return result; } ``` ### 3. 使用正则表达式(C++11 及以上) 对于支持 C++11 或更高版本的编译器,可以使用 `<regex>` 库来匹配并替换多余的空格。 ```cpp #include <regex> #include <string> using namespace std; string removeExtraSpaces(string s) { regex pattern("\\s+"); // 匹配任意多个空格 s = regex_replace(s, pattern, " "); // 替换为单个空格 if (!s.empty() && s.front() == ' ') s.erase(0, 1); // 去除开头空格 if (!s.empty() && s.back() == ' ') s.pop_back(); // 去除结尾空格 return s; } ``` ### 4. 手动遍历字符串 如果不希望依赖额外库或使用复杂的算法,可以直接遍历字符串,手动记录有效字符的位置,并构建新的字符串。 ```cpp string removeExtraSpaces(string s) { string result; bool inSpace = false; for (char c : s) { if (c != ' ') { if (inSpace && !result.empty()) { result += ' '; inSpace = false; } result += c; } else { inSpace = true; } } return result; } ``` 这些方法可以根据实际需求进行选择。如果追求性能,双指针法是最优解之一;如果注重代码简洁性,可以考虑 `std::stringstream` 或正则表达式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lin&Yi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值