读书人

c++提取字符串中括号里面的内容

发布时间: 2013-12-26 15:24:01 作者: rapoo

c++提取字符串中括号里边的内容
例如 abcd efg h(c13)
括号里内容不固定,字符或者数字,怎么全部提取出来呢?结果是c13
[解决办法]

#include <stdio.h>
#include <locale.h>
char s[]="abcd efg h(c13)";
char t[33];
wchar_t ws[]=L"abcd efg h(c13)";
wchar_t wt[33];
int main() {
if (1==sscanf(s,"%*[^(](%32[^)]",t)) {
printf("%s\n",t);
} else {
printf("Format error:%s\n",s);
}

setlocale(LC_ALL,"chs");
if (1==swscanf(ws,L"%*[^(](%32[^)]",wt)) {
wprintf(L"%s\n",wt);
} else {
wprintf(L"Format error:%s\n",ws);
}

return 0;
}
//c13
//c13
//

[解决办法]
比较喜欢用C中的strchr 先找到( 的地址p1, 再用strchr 找到)的地址p2
strcpy(szDest, p1 + 1, p2-p1-1 ); 就可以得到括号内容szDest了
[解决办法]
引用:
Quote: 引用:

用string的话就简单了.
string str = "abcd efg h(c13)";
str = str.substr(str.find("(")+1 ,str.find(")")-str.find("(")-1);

是CString类型的,提示没有这个成员变量,需要转换为string类型再转换回来么?
CString可以使用Mid成员函数,Mid的参数意思好像和这个substr差不多,看一下MSDN就明白的,很简单

读书人网 >C++

热点推荐