我在 C++ 中遇到了一些非 Ascii 字符的问题。我有一个包含非 ascii 字符的文件,我正在通过文件处理在 C++ 中读取该文件。读取文件(比如 1.txt)后,我将数据存储到字符串流中并将其写入另一个文件(比如 2.txt)。
假设 1.txt 包含:
ação
在 2.txt 中,我应该得到相同的输出,但非 Ascii 字符被打印为 2.txt 中的十六进制值。
另外,我很确定 C++ 仅将 Ascii 字符作为 Ascii 处理。
请帮助如何在 2.txt 中正确打印这些字符
编辑:
首先是全过程的伪代码:
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
正在读取的数据库中存在的数据:Instalação
文件 11.txt 包含:Instalação
文件 F.txt 包含:Instalação
a.cpp 在屏幕上的输出: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;
}
语言环境是这样说的:
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=