我在 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
数据库中读取的数据: 安装
文件 11.txt 中包含: Instalação
文件 F.txt 中包含: Instalação
a.cpp 在屏幕上输出的结果: 安装
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的含义是:
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=