c++ 检测CSV分隔符是否为“;“或“,”

icomxhvb  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(147)

根据区域设置,CSV分隔符(或列表分隔符)可能是;而不是,,至少在Windows上取决于区域设置。
是否有跨平台的方法来检测Qt中的CSV分隔符是什么?
如果没有跨平台的方法可用,是否有特定于Windows的方法?

1bqhqjot

1bqhqjot1#

QLocale::groupSeparator()

QChar separator = QLocale().groupSeparator();

编辑:

但这不是一个正确的答案。组分隔符是在数字组之间的长数字中使用的字符,例如:“一千二百三十四点五六”。在该示例中,组分隔符是逗号,小数点分隔符是句点。
QLocale似乎根本不包含列表分隔符。您可以尝试根据使用的小数点分隔符进行猜测。如果十进制分隔符是.,则使用,作为CSV分隔符,如果十进制分隔符是,,则使用;作为CSV分隔符。但我不知道这是否涵盖所有语言。

xdnvmnnf

xdnvmnnf2#

对于Windows,您可以使用GetLocaleInfo API读取列表分隔符。

GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, szBuf, sizeof(szBuf));
jaql4c8m

jaql4c8m3#

在Qt5.15中,有一个函数QLocale::createSeparatedList可以用来创建一个分隔列表或检测分隔符(通过创建一个虚拟列表并检测使用了什么分隔符)

相关问题