我在C++中遇到了一些非ASCII字符的問題。我有一個文件包含非ASCII字符,我通過文件處理在C++中讀取。讀取文件(比如1.txt)後,我將數據存儲到字符串流中,並將其寫入另一個文件(比如2.txt)。使用C++處理非ASCII字符
假設的1.txt包含:
ação
在2.txt我應該得到相同的ouyput但非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=
那麼到底什麼是您的問題? 「如何識別ASCII字符,並將非ASCII碼打印爲十六進制?」 –
發佈您的實際代碼(展示您的問題的最小樣本),然後我們可以告訴您需要做什麼最小的更改。 – chris
我想僅在2中打印非ascii字符作爲非ASCII字符。TXT,而不是他們的十六進制值 –