我正在寻找一种简单而万无一失的方法来将任意转换QStringList为单个QString和后退.
QStringList fruits;
fruits << "Banana", "Apple", "Orange";
QString packedFruits = pack(fruits);
QStringList unpackFruits = unpack(packedFruits);
// Should be true
// fruits == unpackFruits;
Run Code Online (Sandbox Code Playgroud)
对于这类问题,最简单的解决方案是什么?
Log*_*uff 23
从- QStringList到:QStringQStringList::join
将所有字符串列表的字符串连接成一个字符串,每个元素由给定的分隔符(可以是空字符串)分隔.
QString pack(QStringList const& list)
{
return list.join(reserved_separator);
}
Run Code Online (Sandbox Code Playgroud)
从- QString到:QStringListQString::split
无论何处
sep发生,都将字符串拆分为子字符串,并返回这些字符串的列表.如果sep不匹配字符串中的任何位置,则split()返回包含此字符串的单元素列表.
QStringList unpack(QString const& string)
{
return string.split(reserved_separator);
}
Run Code Online (Sandbox Code Playgroud)
QStringList strList;
strList << "Banana" << "Apple" << "Orange" ;
QString str = strList.join(""); // str = "BananaAppleOrange";
str = strList.join(","); // str = "Banana,Apple,Orange";
Run Code Online (Sandbox Code Playgroud)
以前的答案提到的QString::split和QStringList::join这是正确的做法,但如果您选择分离器包含在任意的字符串它会破坏你的转换。
您必须使用以下一种方法来防止列表中的字符串包含分隔符:
QByteArray::toHex(myString.toLatin1())表示,然后使用具有字符(一个或多个)的范围0..9和A..F之外的分离器中。然后转换回用QString::fromLatin1(QByteArray::fromHex(myHexString))后| 归档时间: |
|
| 查看次数: |
10237 次 |
| 最近记录: |