C++中提取字串

边缘998 2011-04-22 05:14:29
string http://192.168.1.19:80

如何得到:http://192.168.1.19
及80
有没有从右端查找的,如果没有,哪如何分割,
这个80不一定长度的,有可能是8000
意思就是IP和端口分开
...全文
248 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liang4 2011-04-25
  • 打赏
  • 举报
回复
CString StrIp = "http://192.168.1.19:80", str;
char ch = ':';
CStringArray strOutAry;
int nCount = 0;
while(AfxExtractSubString(str,StrIp,nCount++,ch))
{
str.TrimLeft();
str.TrimRight();
strOutAry.Add(str);
}
nth2say 2011-04-25
  • 打赏
  • 举报
回复
std::string::rfind()
std::string::substr()
即可。

这种简单的字符串分割用boost的正则库不如用 boost的string algo库来的方便了。。
yanganglove 2011-04-25
  • 打赏
  • 举报
回复
使用BOOST的正则表达式,很方便.
alweeq86 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pcgg5244 的回复:]
我比较喜欢这个

C/C++ code

char url[]="http://192.168.1.19:80";
char probuf[32];
char ipbuf[32];
char portbuf[32];
sscanf(url,"%[^0-9.]%[^:]:%[0-9]",probuf,ipbuf,portbuf);
[/Quote]
pcgg5244 2011-04-23
  • 打赏
  • 举报
回复
我比较喜欢这个

char url[]="http://192.168.1.19:80";
char probuf[32];
char ipbuf[32];
char portbuf[32];
sscanf(url,"%[^0-9.]%[^:]:%[0-9]",probuf,ipbuf,portbuf);
Coder_User 2011-04-23
  • 打赏
  • 举报
回复
http://192.168.1.19:80/
这样看,端口号就好找些了,o(∩_∩)o...
worship123123 2011-04-23
  • 打赏
  • 举报
回复
这个正解
[Quote=引用 6 楼 huangcheng90 的回复:]
C/C++ code

CString str(_T("http://192.168.1.19:80")),strResult;
int nPos = str.ReverseFind(':');
strResult = str.Left(nPos);
[/Quote]
TandyT 2011-04-22
  • 打赏
  • 举报
回复
可以按照特征 :查找啊
sharptiger123 2011-04-22
  • 打赏
  • 举报
回复
CString strIP,strPort;
CString str(_T("http://192.168.1.19:80"));
int pos=str.Find("//");
str=str.Mid(7);
pos=str.Find(":");
strIP=str.Left(pos);
strPort=str.Right(str.GetLength()-pos-1);
Dreadnought 2011-04-22
  • 打赏
  • 举报
回复

CString str(_T("http://192.168.1.19:80")),strResult;
int nPos = str.ReverseFind(':');
strResult = str.Left(nPos);
hztj2005 2011-04-22
  • 打赏
  • 举报
回复

char wangzhi[50]="http://192.168.1.19:80"


char a[40]=strtok(wangzhi,":")
char b[20]=strtok(NULL,":")
黑泡泡选手 2011-04-22
  • 打赏
  • 举报
回复
看你字符串有啥特征了,可以按照http进行查找,或是. . . . :后面的数字是端口号
Eleven 2011-04-22
  • 打赏
  • 举报
回复
_tcsrchr(..,_T(':'));
忽悠 2011-04-22
  • 打赏
  • 举报
回复
ReverseFind,自己去看下用法
King_hhuang 2011-04-22
  • 打赏
  • 举报
回复
CString::ReverseFind
从右边开始查找
Lephone Loczlize Plus 1.06 文注册版是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译的程序的字符串、VB 编译的程序的字符串、文本格式的字符串等的提取及替换。同时它还拥有方便的版本升级功能、字典处理功能,使您在翻译新版本时事半功倍。本软件提供英文、简体文和繁体文三种语言选择,并且您也可以很方便的添加对其它语言的支持。 Win98/Me/2000/XP/Vista 可以直接运行本软件,Win95/NT4 需要安装 VB6 运行库。你可以在微软的站点下载它。 本软件主要用于非资源格式的本地化工作,对于资源格式的本地化工作,虽然也可以使用本工具处理,但因为无法做到大于源字串的替换,所以推荐使用其它一些工具(如 Visual C++、ResHacker 等)处理。 本软件的每一个界面上都有一段说明,在使用其功能之前,请先阅读这些说明。 对于所有的功能,其所说的“对照文件”和“字典文件”都忽略空行,所以可以随意添加空行,不过只有空格的行不被视为空行,而“对照文件”的其它行以如下格式重复: 偏移量:源字串 修改后的字串 “偏移量”用十进制表示,一般应由程序自行填写,用户不要再做修改;“源字串”也一样由程序自行填写,用户也不要再做修改。 而“字典文件”的其它行以如下格式重复: 源字串 修改后的字串 同样的,“源字串”也由程序自行填写,用户不要再做修改。 另外,所有对可执行文件进行的替换工作,都不能进行长于源字串的替换,如果修改后的字串长于源字串,本程序将自动剪裁以便和源字串长度相同。如果短于源字串,将会以十六进制数“00”或空格(在“替换字串”界面上选择“多余补空格”)填充空余。 对于 VB 和 Delphi 编译的程序,因为有字串长度计数器,所以使用其专用功能不仅能提高查找的准确性,而且替换后的程序的兼容性也会更好,故推荐对于它们使用其专用的查找和替换功能。 本工具约定,VB 格式的 UniCode 的对照文件的扩展名是“.txt”,Delphi 格式的 ASCII 对照文件的扩展名是“.d.txt”, UniCode 格式的对照文件的扩展名是“.u.txt”,而 ASCII 格式的对照文件的扩展名是“.a.txt”。这四种对照文件的格式完全相同。程序会根据所选文件名判断它的类型,虽然用户仍然可以更改类型,不过还是建议使用约定的扩展名。 因为本程序在替换的时候做源字串的检测,所以选错类型一般不会造成不可挽回的后果,不过还是慎重为好。 对于 UniCode 和 ASCII 的查找,并没有前缀作为判断标志,所以如果一个字串的实际长度大于所选的最大长度,则采取右截取的方式。比如实际字串“Text”,而最大长度选择“3”,则提取字串为“ext”。 对于内含回车换行的字串,使用替换方式进行处理,如下: 对于内含回车换行的字串,使用替换方式进行处理,如下: 回车 替换成 \r 换行 替换成 \n \ 替换成 \\ ” 替换成 \” Tab 替换成 \t “翻译新版本”时,既可以使用“字典文件”,也可以使用“对照文件”。而“对照文件”可以使用“偏移量方式”的“分割对照文件”功能得到“字典文件”。 本程序查找时没有进度条指示进度,不过用户可以预估查找时间。在 P200 上的测试数据如下:查找 UniCode (包括 VB)的速度是 1MB/s ,而查找 ASCII (包括 Delhpi)的速度是 0.5MB/s 。 对于“清除预定义项”,用户可以自行修改其同目录下的“PDef.dat”文件。而对于它,可以使用“翻译项方式”的分割方式分割对照文件,把得到的“.2”文件想添加的项加入“PDef.dat”即可。不过就我的测试而言,“清除预定义项”的功能对于不特定软件的效果并不是很显著,当然了,对于特定的软件(把不需要的项加入了“PDef.dat”的)效果还是不错的。 对于 INI 文件需要注意的是,程序只把第一个字符是“;”的行作为注释,如果有如“属性=值;注释”这样的行,将把“值;注释”当作“值”处理。 繁简用语替换时,如果用户的使用界面是简体文,则使用 GBK 内码,如果用户的使用界面是繁体文,则使用 BIG5 内码,分别对应不同的字典文件,如果本软件提供的词汇量不够的话,可以自行添加。此功能不进行内码转换,所以如果需要转换内码的话,请配合使用其它软件。在字典请尽量使用长的词汇,这样可以增加准确性。我测得的替换速度约为 50KB/s (字典文件过大时也会对速度造成影响)。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧