检测 CSV 分隔符是";"还是","
Detect if the CSV separator is ";" or ","
根据区域设置,CSV分隔符(或列表分隔符)可能是;
而不是,
,这至少在Windows上取决于区域设置。
是否有一个跨平台的方法来检测什么CSV分隔符是与Qt?
如果没有跨平台的方法,是否有windows专用的方法?
有QLocale::groupSeparator()
:
QChar separator = QLocale().groupSeparator();
编辑:但这不是一个正确的答案。分组分隔符是用于分组之间的长数字的字符,例如:"1,234.56"。在该示例中,组分隔符为逗号,小数点分隔符为句号。
QLocale似乎根本不包含列表分隔符。您可以尝试根据使用的小数分隔符进行猜测。如果小数分隔符为.
,则使用,
作为CSV分隔符,如果小数分隔符为,
,则使用;
作为CSV分隔符。但我不知道这是否涵盖了所有语言
对于Windows,您可以使用GetLocaleInfo API读取列表分隔符。
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, szBuf, sizeof(szBuf));
在Qt 5.15中,有一个函数QLocale::createSeparatedList,您可以使用它来创建一个分隔列表或检测分隔符(通过创建一个虚拟列表并检测已使用的分隔符)
示例(来自下面的注释)
QLocale l;
qDebug() << l.createSeparatedList({"1","2","3"}).at(1);
相关文章:
- enum是C++中的宏变量还是整数变量
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 在命名空间中定义函数还是限定函数
- 正在将csv文件读取为双精度矢量
- 架构决策:返回std::future还是提供回调
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 异常属于C++中的线程还是进程
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 如何在C++中确定文本文件中的元素是字符还是数字
- 返回值优化:显式移动还是隐式
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 为什么需要知道一个类是平凡的还是有平凡的构造函数
- 如何选择在 csv 文件中输出的位置
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在这种情况下,我真的复制了字节还是复制了字符?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- CIN是逻辑1还是0?
- 检测 CSV 分隔符是";"还是","