Sto utilizzando boost::lexical_cast<std::string>(double)
per convertire i doppi in stringa, generando un flusso di byte serializzato JSON, ovvero (sul lato remoto) analizzato da .NET.Garanzia invariant locale di boost :: lexical_cast <>
Sono in grado di forzare .NET a utilizzare InvariantCulture
per l'analisi, restituendo così risultati prevedibili su ogni lingua possibile.
Tuttavia, non sono riuscito a trovare questa garanzia nella documentazione boost::lexical_cast. Ho provato un po ', e funziona allo stesso modo per diversi set locali. Ma, non posso essere sicuro solo di alcuni test, mi manca qualcosa nella documentazione, o questo non può essere garantito a tutti, e devo usare qualcos'altro?
MODIFICA: Ho riscontrato un problema.
std::locale::global(std::locale("Czech"));
std::cout << boost::lexical_cast<std::string>(0.15784465) << std::endl;
rendimenti 0,15784465
, e che è indesiderato. Posso forzare lo boost::lexical_cast<>
a non conoscere le impostazioni locali?
Fondamentalmente, il problema è che le impostazioni locali di C++ non sono locali thread-locali e che rispettano RAII. – MSalters