Tokenizar una cadena con una cadena vacía

programación


Tengo esta cadena:

T;150;;cha;;22052024;Glo snc;;;;

Tengo que tokenizar pero la primera cadena es T, luego 150 y luego cha,
Pero yo quiero:

T 150 y cadena vacía y no cha… ¿cómo debo hacer?

escribí:

CString strToken = str_line.Tokenize(_T(";"), nTokenPos);
strToken = str_line.Tokenize(_T(";"), nTokenPos);

Lo que he probado:

Intenté usar este código pero no lee una cadena vacía.

Solución 1

Solución 2

Una solución sencilla sería escribir su propia función que también reconozca tokens vacíos. Podría verse así:

C++
CString MyTokenize(CString& source, const LPCWSTR& delimeter, int& first)
{
    CString token;
    int count, end = source.Find(delimeter, first);

    if (end != -1) {
        count = end - first;
        token = source.Mid(first, count);
        first = end + 1; // next token
    }
    else {
        count = source.GetLength() - first;
        token = source.Mid(first, count);
        first = -1;    // last token
    }
    return token;
}

コメント

タイトルとURLをコピーしました