C++ Split Wide Char String

2019-08-08 15:10发布

I'm trying to split a WideChar String in to an array, Here is the way I'm doing this :<>

WCHAR* Message = _T("This is a sample text"):
wchar_t *pwc;
CStringArray Command;
pwc = wcstok(Message, L" ");
int Count = 0;
while (pwc != NULL) {
    pwc = wcstok(NULL, L" ");
    Command.Add(pwc);
    Count++;
}

for (int i = 0 ; i <= Count ; i++)
{
    AfxMessageBox(Command[i]);
}

The problem is I do not have "This" in my final result array
Whats wrong ?

2条回答
叛逆
2楼-- · 2019-08-08 15:51

You need to move the call to Command.Add before the assignment to pwc in the loop - as it stands you're moving on to the second token before doing your first Add.

查看更多
冷血范
3楼-- · 2019-08-08 15:52

I am having no issues with your source. All string components are printing perfectly.

Here's my full working code:

#include "stdafx.h"
#include <wchar.h>

int main(int argc, char *argv[])
{
    wchar_t wcs[] = L"This is a sample string";
    wchar_t *pwc;
    pwc = wcstok(wcs, L" ");
    while (pwc != NULL) {
        wprintf(L"%ls\n", pwc);
        pwc = wcstok(NULL, L" ");
    }
}
查看更多
登录 后发表回答