Мне нужно распечатать файл cvs с номерами. Когда файл печатается, у меня есть номера с точками, но они мне нужны запятыми.C++ Как напечатать в файле двойное десятичное число с запятой (вместо точки)
Вот пример. Если я напечатаю это число в терминале с помощью метода locale, я получаю номер с запятой, но в файле у меня одинаковое число, но с точкой. Я не понимаю, почему. Как я мог это сделать?
#include <iostream>
#include <locale>
#include <string> // std::string, std::to_string
#include <fstream>
using namespace std;
int main()
{
double x = 2.87;
std::setlocale(LC_NUMERIC, "de_DE");
std::cout.imbue(std::locale(""));
std::cout << x << std::endl;
ofstream outputfile ("out.csv");
if (outputfile.is_open())
{
outputfile <<to_string(x)<<"\n\n";
}
return 0;
}
Заранее спасибо.
imbue thestream object, а не cout. –
@Neil [Кажется, не помогает] (http://coliru.stacked-crooked.com/a/2947e8488c8fb6a2). –
Обратите внимание, что вам нужно включить '' для 'std :: setlocale'. Он может работать без заголовка, но нет никакой гарантии (например, он не компилируется без него в Visual C++). –