Umgang mit Nicht-ASCII-Zeichen in C ++
Ich habe Probleme mit Nicht-ASCII-Zeichen in C ++. Ich habe eine Datei mit Nicht-ASCII-Zeichen, die ich in C ++ über die Dateiverwaltung lese. Nach dem Lesen der Datei (z. B. 1.txt) speichere ich die Daten in einem String-Stream und schreibe sie in eine andere Datei (z. B. 2.txt).
Angenommen, 1.txt enthält:
ação
In 2.txt sollte ich den gleichen Wert haben, aber Nicht-ASCII-Zeichen werden als Hex-Wert in 2.txt ausgegeben.
Außerdem bin ich mir ziemlich sicher, dass C ++ ASCII-Zeichen nur als ASCII-Zeichen behandelt.
Bitte helfen Sie mit, wie diese Zeichen in 2.txt korrekt gedruckt werden
BEARBEITEN:
Erstens Pseudocode für den gesamten Prozess:
1.Shell script to Read from DB one Value and stores in 11.txt
2.CPP Code(a.cpp) reading 11.txt and Writing to f.txt
Daten in DB vorhanden, die gelesen werden:Instalação
Datei 11.txt enthält:Instalação
Datei F.txt enthält:Instalação
Ausgabe von a.cpp auf dem Bildschirm:Instalação
a.cpp
#include <iterator>
#include <iostream>
#include <algorithm>
#include <sstream>
#include<fstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream myReadFile;
ofstream f2;
myReadFile.open("11.txt");
f2.open("f2.txt");
string output;
if (myReadFile.is_open())
{
while (!myReadFile.eof())
{
myReadFile >> output;
//cout<<output;
cout<<"\n";
std::stringstream tempDummyLineItem;
tempDummyLineItem <<output;
cout<<tempDummyLineItem.str();
f2<<tempDummyLineItem.str();
}
}
myReadFile.close();
return 0;
}
Das Gebietsschema sagt dies:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=