Изображение, которое вы загрузили, показывает, что вы на самом деле запускаете несколько потоков, но культура устанавливается только для текущего потока.
Чтобы преодолеть это, вы можете присвоить желаемую культуру переменной и использовать ее внутри Task.Factory.StartNew
. Вы можете сделать что-то вроде этого:
var culture = new System.Globalization.CultureInfo("en-US");
return Task.Factory.StartNew(() =>
{
// use culture here
Thread.CurrentThread.CurrentCulture = culture;
// your actual code here
String i = "0.48,trx/btc,coss,hitbtc2,0.0000062000 / 0.0000066000,0.0000061502 / 0.0000061701,,0.48%";
double test = double.Parse(i.Split(',')[0]);
});
Как указал @madreflection, вы можете просто передать желаемую культуру методу double.Parse()
:
// put this at the top of your file
var culture = new System.Globalization.CultureInfo("en-US");
// use this inside Task.Factory.StartNew
double test = double.Parse(i.Split(',')[0], culture);
Или даже использовать CultureInfo.InvariantCulture
внутри Task.Factory
(спасибо @Olivier):
double test = double.Parse(i.Split(',')[0], CultureInfo.InvariantCulture);
Стандартная библиотека C ++ не поддерживает Unicode. char
и wchar_t
не обязательно должны быть кодировками Unicode.
В Windows wchar_t
- это UTF-16, но прямой поддержки UTF-8 нет. имена файлов в стандартной библиотеке (тип данных char
не является Unicode в Windows)
В MSVC (и, следовательно, в Microsoft STL) предоставляется конструктор для файловых потоков, который принимает const wchar_t *
имя файла, позволяющее создать поток как:
wchar_t const name[] = L"filename.txt";
std::fstream file(name);
Однако эта перегрузка не указана в стандарте C ++ 11 (она гарантирует только наличие версии на основе char
). Он также отсутствует в альтернативных реализациях STL, таких как GCC libstdc ++ для MinGW (-w64), начиная с версии g ++ 4.8.x.
Обратите внимание, что точно так же, как char
в Windows не является UTF8, в других ОС wchar_t
может не быть UTF16. В общем, это вряд ли будет портативным. Открытие потока с именем файла wchar_t
не определено в соответствии со стандартом, и указание имени файла в char
s может быть затруднено, поскольку кодировка, используемая char, варьируется в зависимости от ОС.
В текущих версиях Visual C ++ метод std :: basic_fstream имеет метод open ()
, который принимает wchar_t * в соответствии с http://msdn.microsoft .com / EN-US / библиотека / 4dx08bh4.aspx .