string 类中,如何删除字符串中的空格??????

软件和网站开发以及相关技术探讨
回复
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

string 类中,如何删除字符串中的空格??????

#1

帖子 weihua2008 » 2009-04-17 11:37

如题
xiujie
帖子: 12
注册时间: 2008-09-22 16:01

Re: string 类中,如何删除字符串中的空格??????

#2

帖子 xiujie » 2009-04-18 16:26

这个是删除首尾空格的,你可以修改一下。

代码: 全选

string Trim(const string str){
  string s("");
  int i=0;
  int y=0;
  for(i=0;i<str.size();i++){
    if(str.at(i) != ' ')break;
  }
  for(y=str.size()-1;y>=0;y--){
    if(str.at(y) != ' ')break;
  }
  for(;i<=y;i++)
    s.append(1,str.at(i));
  return s;
}
mesocool
帖子: 113
注册时间: 2005-03-27 17:11
系统: Linux Mint 14 Nadia
来自: Seattle, USA
联系:

Re: string 类中,如何删除字符串中的空格??????

#3

帖子 mesocool » 2009-04-20 1:52

如果只是首尾空格用trim()就好拉..

http://guanyu.info
simplicity is the key to brilliance
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: string 类中,如何删除字符串中的空格??????

#4

帖子 eexpress » 2009-04-20 8:32

其实用到正则库,应该很少需要自己这样修改字符串了的。
● 鸣学
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: string 类中,如何删除字符串中的空格??????

#5

帖子 weihua2008 » 2009-04-20 12:26

mesocool,
大哥你说的是吗,我在问c++ string类
不是在问Cstring,你地明白的干活?
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: string 类中,如何删除字符串中的空格??????

#6

帖子 weihua2008 » 2009-04-20 12:27

xiujie,
谢谢
mesocool
帖子: 113
注册时间: 2005-03-27 17:11
系统: Linux Mint 14 Nadia
来自: Seattle, USA
联系:

Re: string 类中,如何删除字符串中的空格??????

#7

帖子 mesocool » 2009-04-20 13:37

weihua2008 写了:mesocool,
大哥你说的是吗,我在问c++ string类
不是在问Cstring,你地明白的干活?
你标题里又没注明你问的是c++.. :em20
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: string 类中,如何删除字符串中的空格??????

#8

帖子 weihua2008 » 2009-04-20 14:29

,我错了,谢谢你的回复
不好意思
头像
lysting
帖子: 41
注册时间: 2006-07-13 11:43
来自: 深圳
联系:

Re: string 类中,如何删除字符串中的空格??????

#9

帖子 lysting » 2009-04-30 21:40

楼主,可以考虑下 remove_if .
头像
lysting
帖子: 41
注册时间: 2006-07-13 11:43
来自: 深圳
联系:

Re: string 类中,如何删除字符串中的空格??????

#10

帖子 lysting » 2009-04-30 21:40

楼主,可以考虑下 remove_if .
头像
kwarph
帖子: 51
注册时间: 2006-06-19 19:19
联系:

Re: string 类中,如何删除字符串中的空格??????

#11

帖子 kwarph » 2009-04-30 22:23

试试看吧,不知道是不是这个意思:

代码: 全选

#include <iostream>
using namespace std;

// 删除首尾空白字符(包括空格,制表符等)
void trim(string& s) {
    if (s.length() < 1) {
        return;
    }

    while (isspace(s[0])) {
        s.erase(0, 1);
    }

    while (isspace(s[s.length() - 1])) {
        s.erase(s.length() - 1, 1);
    }
}

// 删除任意位置的空白字符。
void eatWhite(string& s) {
    if (s.length() < 1) {
        return;
    }

    for (size_t i = 0; i < s.length(); ++i) {
        if (isspace(s[i])) {
            s.erase(i, 1);
        }
    }
}

// Test case
int main() {
    string s("Ubuntu GNU/Linux 9.04 released.");
    cout << "Old: " << s << endl;
    eatWhite(s);
    cout << "New: " << s << endl;
}
输出应该是:

代码: 全选

Old: Ubuntu GNU/Linux 9.04 released.
New: UbuntuGNU/Linux9.04released.
如果是用boost的regex库,可选的功能就多了。
Tiger Cheng
昆山轩辕IT培训中心
C++培训讲师
邮件:kwarph@gmail.com
主页:http://www.xuanyuan-soft.cn
头像
kwarph
帖子: 51
注册时间: 2006-06-19 19:19
联系:

Re: string 类中,如何删除字符串中的空格??????

#12

帖子 kwarph » 2009-04-30 22:46

lysting 写了:楼主,可以考虑下 remove_if .
单独使用remove_if是不行的,还得erase

代码: 全选

#include <iostream>
#include <algorithm>
using namespace std;

// Test case
int main() {
    string s("Ubuntu GNU/Linux 9.04 released.");
    cout << "Old: " << s << endl;
    s.erase(remove_if(s.begin(), s.end(), bind2nd(equal_to<char>(),  ' ')), s.end());
    cout << "New: " << s << endl;
}
输出应如下:

代码: 全选

Old: Ubuntu GNU/Linux 9.04 released.
New: UbuntuGNU/Linux9.04released.
但愿对你有点用处。
Tiger Cheng
昆山轩辕IT培训中心
C++培训讲师
邮件:kwarph@gmail.com
主页:http://www.xuanyuan-soft.cn
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: string 类中,如何删除字符串中的空格??????

#13

帖子 weihua2008 » 2009-05-07 14:03

kwarph,
除了谢谢,只能说谢谢了
回复