Ich muss eine CVS-Datei mit Zahlen drucken. Wenn die Datei gedruckt wird, habe ich Nummern mit Punkten, aber ich brauche sie mit Kommas.C++ Wie in einer Datei eine doppelte Dezimalzahl mit Komma (anstelle von Punkt) gedruckt werden
Hier ein Beispiel. Wenn ich diese Nummer im Terminal mit Locale-Methode drucke, erhalte ich eine Nummer mit Komma, aber in der Datei habe ich die gleiche Nummer, aber mit Punkt. Ich verstehe nicht warum. Wie könnte ich tun?
#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;
}
Vielen Dank im Voraus.
übertragen Sie das Ofstream-Objekt, nicht Cout. –
@Neil [scheint nicht zu helfen] (http://coliru.stacked-crooked.com/a/2947e8488c8fb6a2). –
Beachten Sie, dass Sie '' für 'std :: setlocale' angeben müssen. Es funktioniert zwar ohne den Header, aber es gibt keine Garantie (zum Beispiel kompiliert es nicht ohne es in Visual C++). –