求教用VC分割字符串的
比如我有一串字符“asd1sdf2ser3gad4”
我要通过“ ”将它分割成“asd”“1”“sdf”“2”“ser”“3”“gad”“4”并存入数组
求具体的代码
[解决办法]
楼上正解,不过,用了CString就是用了mfc啊。。。
如果自己不想用mfc,可以自己写个CMyString类。。。。。
[解决办法]
简单的用strtok
- C/C++ code
// crt_strtok.c// compile with: /W3// In this program, a loop uses strtok// to print all the tokens (separated by commas// or blanks) in the string named "string".//#include <string.h>#include <stdio.h>char string[] = "A string\tof ,,tokens\nand some more tokens";char seps[] = " ,\t\n";char *token;int main( void ){ printf( "Tokens:\n" ); // Establish string and get the first token: token = strtok( string, seps ); // C4996 // Note: strtok is deprecated; consider using strtok_s instead while( token != NULL ) { // While there are tokens in "string" printf( " %s\n", token ); // Get next token: token = strtok( NULL, seps ); // C4996 }}
[解决办法]
CString::Tokenize()以空格作为分隔符~
[解决办法]
#include <vector>
using namespace std;
int GetSpaceNumber(const char *pchStr)
{
int count = 0;
if(pchStr != NULL)
{
char *p = (char*)pchStr;
while(*p!='\0')
{
if(*p==' ')
{
count++;
}
p++;
}
}
return count;
}
int main()
{
const char szBuffer[] = {"asd 1 sdf 2 ser 3 gad 4"};
int count = GetSpaceNumber(szBuffer);
vector<char*> vcRlt;
if(count != 0)
{
vcRlt.push_back(strtok((char*)szBuffer, " "));
for (int i = 0; i < count; i++)
{
vcRlt.push_back(strtok(NULL, " "));
}
}
for(vector<char*>::iterator iter=vcRlt.begin(); iter!=vcRlt.end(); ++iter)
{
printf("%s\n", *iter);
}
}