免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1509 | 回复: 8
打印 上一主题 下一主题

[算法] 请问一个从80|8080|1863格式的串中快速分离的stl算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-11 15:46 |只看该作者 |倒序浏览
请教:

假如我有一个string类型的串 80|8080|1863
有没有什么算法可以快速的把 80 8080 1863从串里面分离出来呢?

好像记得有些算法可以用 "|"这些标志来从一个串里面拷贝子串的。

就是 80|1863|8080

用算法可以以 "|"作为标志拷贝 分别拷贝 80 8080 1863 出来的。是不是?

论坛徽章:
0
2 [报告]
发表于 2007-02-11 15:55 |只看该作者
char *p = "|";
string str = "80|8080|1863";
string::size_type nPos1, nPos2;

nPos1 = 0;
while (string::npos != (nPos2 = str.find_first_of(p, nPos1)))
{
        // nPos1-nPos2之间的就是你想要的东东

     // 新的查找位置
     nPos1 = nPos2;
}

算法大体是这样的了,我没有测试过.

论坛徽章:
0
3 [报告]
发表于 2007-02-11 16:01 |只看该作者
谢谢converse 。
但是我想问有没有那种标准库提供的函数。可以直接就可以得出结果的。不是还要自己在写算法的。

论坛徽章:
0
4 [报告]
发表于 2007-02-11 16:02 |只看该作者
不好意思converse, 我看错了!

论坛徽章:
0
5 [报告]
发表于 2007-02-11 16:45 |只看该作者
#include <iostream.h>
#include <string.h>

void main( void )
{
        char buf[] = "abc|def|haha|jkjk|heihei";

        char *ptr = strtok(buf, "|");
        printf("%s\n", ptr);
        while(ptr = strtok(NULL, "|"))
        {
                printf("%s\n", ptr);
        }
}

论坛徽章:
0
6 [报告]
发表于 2007-02-11 16:46 |只看该作者
stl没找到。。。

论坛徽章:
0
7 [报告]
发表于 2007-02-11 17:00 |只看该作者
#include <iostream.h>
#include <string.h>

改为:
#include <iostream>
#include <string>

using namespace std;

论坛徽章:
1
射手座
日期:2013-09-30 15:24:05
8 [报告]
发表于 2007-02-11 17:07 |只看该作者
咋都是win c 了啊

论坛徽章:
0
9 [报告]
发表于 2007-02-11 18:23 |只看该作者
  1.   string text = "80|8080|1863";
  2.   stringstream ss( text );
  3.   string sub_str;
  4.   while ( getline( ss, sub_str, '|' ) ) {
  5.     // Use sub_str here.
  6.   }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP