根据不同的区域设置,CSV分隔符(或列表分隔符)可能是;
而不是,
,在Windows上至少取决于区域设置。
有没有一种跨平台的方法来检测Qt中的CSV分隔符?
如果没有跨平台的方法,则是否有Windows特定的方法?
根据不同的区域设置,CSV分隔符(或列表分隔符)可能是;
而不是,
,在Windows上至少取决于区域设置。
有没有一种跨平台的方法来检测Qt中的CSV分隔符?
如果没有跨平台的方法,则是否有Windows特定的方法?
有一个QLocale::groupSeparator()
函数:
QChar separator = QLocale().groupSeparator();
编辑:
但这不是正确的答案。组分隔符是在长数字之间使用的字符,例如:“1,234.56”。在这个例子中,组分隔符是逗号,小数点分隔符是句号。
似乎QLocale根本没有包含列表分隔符。您可以根据使用的小数分隔符来猜测。如果小数分隔符为。
,则使用,
作为CSV分隔符;如果小数分隔符为,
,则使用;
作为CSV分隔符。但我不知道这是否涵盖了所有语言。
' '
,这肯定不是 CSV 分隔符:qDebug() << QLocale(QLocale::Russian, QLocale::RussianFederation).groupSeparator();
。看起来 groupSeparator
是数字组中的分隔符。 - Lol4t0对于 Windows 系统,您可以使用 GetLocaleInfo API 读取列表分隔符。
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, szBuf, sizeof(szBuf));
QLocale l;
qDebug() << l.createSeparatedList({"1","2","3"}).at(1);
QLocale l; qDebug()<<l.createSeparatedList({"1","2","3"}).at(1);
- Abderrahmene Rayene Mihoublocale.groupSeparator()
,但它给我一个点。恐怕没有办法使用Qt库获取CSV分隔符!:-( - undefined
,
)被用作小数分隔符。这就是为什么需要另一个字符(;
)作为千位分隔符的原因。 - user362638;
。 - sashoalmX,"1,200",950
。可悲的是,没有人遵循RFC 4180。 - Joker_vD