Manipulando caracteres não-ASCII em C ++
Estou enfrentando alguns problemas com caracteres não Ascii em C ++. Eu tenho um arquivo contendo caracteres não-ascii que estou lendo em C ++ via Manipulação de arquivos. Depois de ler o arquivo (digamos 1.txt) eu estou armazenando os dados em fluxo de seqüência de caracteres e gravá-lo em outro arquivo (digamos 2.txt).
Suponha que 1.txt contenha:
ação
No 2.txt eu deveria obter o mesmo ouyput, mas os caracteres não Ascii são impressos como seu valor hexadecimal em 2.txt.
Além disso, tenho certeza de que o C ++ está manipulando os caracteres Ascii apenas como Ascii.
Por favor, ajuda sobre como imprimir esses caracteres corretamente em 2.txt
EDITAR:
Primeiramente Psuedo-Code for Whole Process:
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
Dados presentes no DB que está sendo lido:Instalação
Arquivo 11.txt contém:Instalação
Arquivo F.txt Contém:Instalação
Ouput de a.cpp na tela: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;
}
Locale diz isso:
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=