根据区域设置,CSV分隔符(或列表分隔符)可能是;而不是,,至少在Windows上取决于区域设置。是否有跨平台的方法来检测Qt中的CSV分隔符是什么?如果没有跨平台的方法可用,是否有特定于Windows的方法?
;
,
1bqhqjot1#
有QLocale::groupSeparator():
QLocale::groupSeparator()
QChar separator = QLocale().groupSeparator();
编辑:
但这不是一个正确的答案。组分隔符是在数字组之间的长数字中使用的字符,例如:“一千二百三十四点五六”。在该示例中,组分隔符是逗号,小数点分隔符是句点。QLocale似乎根本不包含列表分隔符。您可以尝试根据使用的小数点分隔符进行猜测。如果十进制分隔符是.,则使用,作为CSV分隔符,如果十进制分隔符是,,则使用;作为CSV分隔符。但我不知道这是否涵盖所有语言。
.
xdnvmnnf2#
对于Windows,您可以使用GetLocaleInfo API读取列表分隔符。
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, szBuf, sizeof(szBuf));
jaql4c8m3#
在Qt5.15中,有一个函数QLocale::createSeparatedList可以用来创建一个分隔列表或检测分隔符(通过创建一个虚拟列表并检测使用了什么分隔符)
3条答案
按热度按时间1bqhqjot1#
有
QLocale::groupSeparator()
:编辑:
但这不是一个正确的答案。组分隔符是在数字组之间的长数字中使用的字符,例如:“一千二百三十四点五六”。在该示例中,组分隔符是逗号,小数点分隔符是句点。
QLocale似乎根本不包含列表分隔符。您可以尝试根据使用的小数点分隔符进行猜测。如果十进制分隔符是
.
,则使用,
作为CSV分隔符,如果十进制分隔符是,
,则使用;
作为CSV分隔符。但我不知道这是否涵盖所有语言。xdnvmnnf2#
对于Windows,您可以使用GetLocaleInfo API读取列表分隔符。
jaql4c8m3#
在Qt5.15中,有一个函数QLocale::createSeparatedList可以用来创建一个分隔列表或检测分隔符(通过创建一个虚拟列表并检测使用了什么分隔符)