2016-05-14 59 views
3

如何将TCHAR拆分为其他变量? 实施例:C - 拆分TCHAR

TCHAR comando[50], arg1[50], arg2[50]; 
Mensagem msg; 
_tcscpy(msg.texto, TEXT("MOVE 10 12")); 

所以,msg.texto具有字符串 “MOVE 10 12” 和我希望变量COMANDO [50]为 “MOVE”,变量ARG1为 “10” 和可变ARG2为“12”。我怎样才能做到这一点? 对不起,可能会出现一些英文错误。 在此先感谢!

解决:

TCHAR *pch; 
    pch = _wcstok(msg.texto, " "); 
     _tcscpy(comando, pch); 
     pch = _wcstok(NULL, " "); 
     _tcscpy(arg1, pch); 
     pch = _wcstok(NULL, " "); 
     _tcscpy(arg2, pch); 
+0

什么是您的系统中的TCHAR?一个'char'例如? – gsamaras

+0

https://msdn.microsoft.com/en-us/library/office/cc842072.aspx – user3088049

回答

1

对于TCHAR,你可以在这个例子中使用strtok,如:

#include <stdio.h> 
#include <string.h> 

typedef char TCHAR; 

int main() 
{ 
    TCHAR str[] ="MOVE 10 12"; 
    TCHAR * pch; 
    printf ("Splitting string \"%s\" into tokens:\n",str); 
    pch = strtok (str," "); 
    while (pch != NULL) 
    { 
    printf ("%s\n",pch); 
    pch = strtok (NULL, " "); 
    } 
    return 0; 
} 

如果它是一个wchar_t,那么你可以使用wcstok()

wchar_t * wcstok(wchar_t * strToken,const wchar_t * strDelimit );

+0

我记得,'TCHAR'可以是'char'或'wchar_t'--更常见的是后者。 'strtok'不适用于'wchar_t'数组。 (我不记得是否有相应的函数可以在宽字符串上运行。) –

+0

@KeithThompson感谢您为downvote辩护。许多人不会!请参阅问题下的评论,我向OP询问了这个问题。他回答了这个[链接](https://msdn.microsoft.com/en-us/library/office/cc842072.aspx)。但是,如果您想提出如何改进我的答案,请让我知道! – gsamaras

+0

@gsmaras感谢您的帮助,但这不起作用。 – user3088049