在C ++中为Excel自动生成一个locale csv文件

我想生成一个包含数字的CSV文件,我希望Excel自动读取该文件。

但是,根据区域设置,Excel使用不同的csv格式。 例如:

英语:

  • 文本分隔符:,
  • 小数点分隔符:。

西class牙:

  • 文本分隔符:;
  • 小数分隔符:,

是否有可能自动检测C ++中的这些设置,所以我可以根据它们生成文件?

我知道我可以使用语言环境对象获取小数点分隔符,但我不知道如何获取文本分隔符。

这个问题涉及到: CSV实际上是…分号分隔值 。 但是,我不想读取文件,但要生成它,我想自动检测设置。

我不认为标准的C ++有一个“文本分隔符”的概念,这是特定于Windows的。 因此可以使用带LOCALE_SLIST标志的GetLocaleInfo。

你可以,但不能100%确定(但非常接近)。 检测文本分隔符可以通过分析文件(或一个像样的样本)并确定每个logging中每个字符的频率来完成。 每个logging的文本分隔符应该相同(或几乎相同)。 它的频率将比每个logging中的字段数less一个。

一个好的分析器不会计算受双引号保护的字符,因为它们是embedded式的,而不是分隔符(即不计算“Boston,MA 02066”中的逗号,因为它受双引号保护)。

确定文本分隔符后,可以确定十进制分隔符。 只要查找相邻的数字,看看是什么把它们分开(这不是以前确定的文本分隔符)。

使用CultureInfo.TextInfo.ListSeparator。