Générer automatiquement un file csv de localization pour Excel en C ++

Je veux générer un file csv contenant des nombres et je veux que Excel lise ce file automatiquement.

Cependant, Excel utilise un format csv différent en fonction des parameters régionaux. Par exemple:

Anglais:

  • Séparateur de text:,
  • Séparateur décimal: .

Espanol:

  • Séparateur de text:;
  • Séparateur décimal: ,

Est-il possible de détecter automatiquement ces parameters en C ++ afin que je puisse générer le file selon eux?

Je sais que je peux get le séparateur décimal en utilisant un object local, mais je ne sais pas comment get le séparateur de text.

Cette question est liée à: CSV est en fait … Semicolon Separated Values . Cependant, je ne veux pas lire le file, mais le générer et je veux détecter automatiquement les parameters.

Je ne pense pas que C ++ standard ait une notion de "séparateur de text", et que c'est spécifique à Windows. Vous pouvez donc utiliser GetLocaleInfo avec le drapeau LOCALE_SLIST.

Vous pouvez, mais pas avec 100% de certitude (mais très proche). La détection du séparateur de text peut être effectuée en analysant le file (ou un échantillon décent) et en déterminant les fréquences de chaque caractère dans chaque logging. Le séparateur de text doit être le même (ou presque le même) pour chaque logging. Sa fréquence sera inférieure à un nombre de champs dans chaque logging.

Un bon parsingur ne countra pas les caractères protégés par des guillemets, car ils sont embeddeds et non séparateurs (c.-à-d., Ne countz pas la virgule dans "Boston, MA 02066", car elle est protégée par les guillemets doubles).

Les séparateurs décimales peuvent être déterminés après avoir déterminé le séparateur de text. Il suffit de searchr les nombres adjacents et de voir ce qui les sépare (ce n'est pas le séparateur de text précédemment déterminé).

Utilisez CultureInfo.TextInfo.ListSeparator.