| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7824 人关注过本帖
标题:如何去除空格键
只看楼主 加入收藏
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
VC++:
    CString str = "123 34 sd    dewdew ";
    str.Remove(' ');

C++
#include <iostream>
#include <sstream>
using namespace std;


int main(int argc, char *argv[ ])
{
    string s("ab bb  bb  s 3 3  3 3"), s1;
    stringstream ss;
    istringstream iss;

    iss.str(s);

    iss >> s1;
    while (!s1.empty())
    {
        ss << s1;
        iss >> s1;
    }
    cout << ss.str();
    return 0;
}

C:
    char chr[] = "ab er  sd  s 3 6  7 5", chr2[200], *pSrcStart=chr, *pSrcEnd, *pDest=chr2;

    while (pSrcEnd = strchr(pSrcStart, ' '))
    {
        strncpy(pDest, pSrcStart, pSrcEnd-pSrcStart);
        pDest += pSrcEnd-pSrcStart;
        pSrcStart = pSrcEnd+1;
    }
    strcpy(pDest, pSrcStart);

    cout << chr2;
    return 0;

http://myajax95./
2006-08-31 08:36
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
无论用C/C++/VC++都最好不要一个字符一个字符的去数,这样效率会比较低。尽量用库函数或build-in class来提高效率。

http://myajax95./
2006-08-31 08:38
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用baidu在2006-8-31 8:08:31的发言:
MyString *mystring=new MyString("ert rtyrt rty rtyutryu rtyu.");
mystring->DelChar(' ');

你的这个MyString还是没VC的CString::Remove酷


http://myajax95./
2006-08-31 08:41
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用baidu在2006-8-31 8:05:20的发言:

C++也真是没人,竟然如此溜须拍马之贴也给生存空间

是没力气理了,这还用说吗。


http://myajax95./
2006-08-31 08:42
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用myajax95在2006-8-31 8:38:06的发言:
无论用C/C++/VC++都最好不要一个字符一个字符的去数,这样效率会比较低。尽量用库函数或build-in class来提高效率。

不会吧,库函数未必不是一个一个数的,vc中怎么实现的我不知道,不过gcc中就是一个一个数的
以下摘自gcc 4.1.0中strncpy的源码:

char *
strncpy (char *s1, const char *s2, __SIZE_TYPE__ n)
{
char *dest = s1;
#ifdef __OPTIMIZE__
if (strncpy_disallowed && inside_main)
abort();
#endif
for (; *s2 && n; n--)
*s1++ = *s2++;
while (n--)
*s1++ = 0;
return dest;
}

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-31 09:11
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
他的意思是,在你没把握写出比库函数更高效的函数时,不要舍近就远。
大约是这个意思吧?

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-31 09:19
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
字符串处理基本是一个一个数的

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-31 09:21
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
呵呵,如果是这样的话,那是我理解错误了

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-31 09:23
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
[QUOTE]C:
char chr[] = "ab er sd s 3 6 7 5", chr2[200], *pSrcStart=chr, *pSrcEnd, *pDest=chr2;
while (pSrcEnd = strchr(pSrcStart, ' '))
{
strncpy(pDest, pSrcStart, pSrcEnd-pSrcStart);
pDest += pSrcEnd-pSrcStart;
pSrcStart = pSrcEnd+1;
}
strcpy(pDest, pSrcStart);
cout << chr2;
return 0;[/QUOTE]

效率不敢恭维....

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-31 09:33
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-31 09:49
快速回复:如何去除空格键
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038258 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved