2015-01-07 3 views
-1
wchar_t OrderingCode[100]; 

некоторый код к апиC разделить wchar_t массив

string looks like this L"AAAA-1-3-5-5\n\r\BBB-A-3-6-6-4" 

мне нужно разбить строку в 2 на линии подачи. Я нахожу только образец, когда ppl перебирает массив. Является ли какая-либо функция API для использования в качестве String.Split в C#

m_Result.SetWindowTextW(OrderingCode1); 
m_Result.SetWindowTextW(OrderingCode2); 
+0

Может быть, вы можете взглянуть на 'strtok 'функция. – rcs

+1

@rcs Вы должны использовать 'wcstok' для строк с широким символом, когда запрашивается функция API. – harper

ответ

0

Используйте std::string, а затем вы можете легко разделить его следующим образом:

std::vector<std::wstring> SplitString(const std::wstring& str, wchar_t ch) 
{ 
    std::vector<std::wstring> ret; 
    size_t startPos = 0; 
    size_t endPos = str.find(ch, startPos); 
    while(endPos != std::wstring::npos) 
    { 
     ret.push_back(str.substr(startPos, endPos)); 
     startPos = endPos + 1; 
     endPos = str.find(ch, startPos); 
    } 
    ret.push_back(str.substr(startPos, str.length()); 
    return ret; 
} 
+0

Я думаю, что он использует wchar_t для проблем с производительностью. Ваш ответ - не ответ, а предложение. Пересмотрите и ответьте точно на его проблему. Обходное решение не требуется. –

0
wchar_t * test, *next_token1; 
    test = wcstok_s(OrderingCode, L"\n\r", &next_token1); 
    if (test != NULL) 
    { 
     m_Result.SetWindowTextW(test); 
     test = wcstok_s(nullptr, L"\n\r", &next_token1); 
     if (test != NULL) 
     { 
     m_Result2.SetWindowTextW(test); 
     }   
    } 
Смежные вопросы