Pack QStringList to QString and unpack it back

Aleph0 picture Aleph0 · May 31, 2016 · Viewed 17.6k times · Source

I'm in search for an easy and foolproof way to convert an arbitrary QStringList to a single QString and back.

QStringList fruits;
fruits << "Banana", "Apple", "Orange";
QString packedFruits = pack(fruits);
QStringList unpackFruits = unpack(packedFruits);

// Should be true 
// fruits == unpackFruits;

What might be the easiest solution for this kind of problem?

Answer

LogicStuff picture LogicStuff · May 31, 2016

From QStringList to QString - QStringList::join:

Joins all the string list's strings into a single string with each element separated by the given separator (which can be an empty string).

QString pack(QStringList const& list)
{
    return list.join(reserved_separator);
}

From QString to QStringList - QString::split:

Splits the string into substrings wherever sep occurs, and returns the list of those strings. If sep does not match anywhere in the string, split() returns a single-element list containing this string.

QStringList unpack(QString const& string)
{
    return string.split(reserved_separator);
}