- 论坛徽章:
- 14
|
没办法,还是用 strchr 吧- #include <stdio.h>
- #include <string.h>
- int main( void )
- {
- const char* s = "a1,,a3,a4,";
- char a1[10], a2[10], a3[10], a4[10];
- {
- const char* p1 = strchr( s, ',' );
- const char* p2 = strchr( p1+1, ',' );
- const char* p3 = strchr( p2+1, ',' );
- const char* p4 = strchr( p3+1, ',' );
- memcpy(a1,s,p1-s), a1[p1-s]='\0';
- memcpy(a2,p1+1,p2-p1-1), a2[p2-p1-1]='\0';
- memcpy(a3,p2+1,p3-p2-1), a3[p3-p2-1]='\0';
- memcpy(a4,p3+1,p4-p3-1), a4[p4-p3-1]='\0';
- }
- printf("a1[%s],a2[%s],a3[%s],a4[%s]\n",a1,a2,a3,a4);
- return 0;
- }
复制代码 你还可以直接写个分割函数,例如- #include <string>
- #include <vector>
- #include <cstring>
- #include <cstdio>
- std::vector<std::string> split001( const char* str, const char chr )
- {
- std::vector<std::string> can;
- const char* p1 = str;
- for( const char* p2; (p2=strchr(p1,chr))!=0; p1=p2+1 )
- can.push_back( std::string(p1,p2-p1) );
- //can.push_back( p1 ); --- 如果最后一个逗号后面的字符串也要的话,这句不可少
- return can;
- }
- int main( void )
- {
- const char* str = "a1,,a3,a4,";
- auto can = split001( str, ',' );
- for( const auto& s : can )
- printf( " - %s\n", s.c_str() );
- return 0;
- }
复制代码 |
|