C++中字符分割的用法与例子(3种方式)

本文介绍了一种使用不同方法将字符串按指定分隔符进行分割,并将分割后的子串插入到标准模板库(set)中的实现方案。文章通过三种不同的函数实现展示了如何使用 C 语言风格的字符串操作函数 strtok 和 strchr 进行字符串分割,以及如何利用 C++ 标准库中的 string 类完成同样的任务。这些方法适用于需要将字符串拆分为多个部分并存储以便进一步处理的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

include “stdafx.h”

include

include

include

include

int Token(const char* pSep, char* pStr, std::set& refset)
{
for(char* outer = strtok(pStr, pSep) ; NULL != outer; outer = strtok(NULL, pSep))
{
printf( “oken: %s\n”, outer );

    refset.insert(outer);
}

return 0;

}

int Token(int pSep, char* pStr, std::set& refset)
{
char* str=pStr;
char* pSub=strchr(str,pSep);

char subStrBuf[128]={'\0'};
while(NULL!=pSub)
{
    strncpy(subStrBuf, str, pSub-str);
    refset.insert(subStrBuf); 
    printf( "oken: %s\n", subStrBuf );
    str = pSub+1;
    pSub=strchr(str,pSep);
}

if(NULL==pSub && strlen(str)>0)
{
    strncpy(subStrBuf, str, strlen(str));
    refset.insert(subStrBuf); 
    printf( "oken: %s\n", subStrBuf );
} 


return 0;

}

int Token(char ch, char* pStr, std::set& refset)
{
std::string str=pStr;
int pos=str.find(ch);
std::string subStr;
while(-1!=pos)
{
subStr=str.substr(0,pos);
refset.insert(subStr);
printf( “oken: %s\n”, subStr.c_str());
str=str.substr(pos+1, str.size());
pos=str.find(ch);
}

if(pos == -1 && str.size()>0)
{
    refset.insert(str);
    printf( "oken: %s\n", str.c_str());
}

return 0;

}

int _tmain(int argc, _TCHAR* argv[])
{
printf( “==================方式一==================\n”);
char str1[]=”127.0.0.1:10;127.0.0.2:20;127.0.0.3:30”;
std::set tempset;
Token(“;”, str1, tempset);

printf( "==================方式二==================\n");
char str2[]="127.0.0.1:10;127.0.0.2:20;127.0.0.3:30";
std::set tempset2;
Token(';', str2, tempset2);

printf( "==================方式三==================\n");
char str3[]="127.0.0.1:10;127.0.0.2:20;127.0.0.3:30";
std::set tempset3;
Token(';', str3, tempset3);

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值