首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-12-26 
c++提取字符串中括号里边的内容例如 abcd efg h(c13)括号里内容不固定,字符或者数字,怎么全部提取出来呢?

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就明白的,很简单

热点排行