我正在创建一个程序来读取一些文件。
在阅读其中一个文件时,我在文件中遇到了一些变音字符。
我应该怎么读这些人物
&安培;将它们存储在字符串中
目前我使用string::getline()
无法读取这些字符&读指针的位置没有递增。
字符在一行前面有一些空格。
所以我使用ws
删除空格。
我使用peek
来理解问题;当徘徊在窥视o / p char VS2010上时显示y,上面有2个点。所以我猜这是变形虫角色。
答案 0 :(得分:0)
如果这是您需要的 - 此代码从德语文件(UTF-8)文本中读取,在控制台上打印并保存在输出文件中 -
#include <sstream>
#include <iostream>
#include <fstream>
//To handle localized input -
#include <windows.h>
#include <conio.h>
int main()
{
//read from file -
std::ifstream stream("c:\\temporary\\in.txt");
std::string line;
if (stream.is_open())
{
std::getline(stream, line);
}
//print on console -
if(!SetConsoleOutputCP(CP_UTF8)) { // 65001
std::cerr << "Failed to set console output mode!\n";
return 1;
}
HANDLE const consout = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD nNumberOfCharsWritten;
const char* utf8 = line.c_str();
if(!WriteConsoleA(consout, utf8, strlen(utf8), &nNumberOfCharsWritten, NULL)) {
DWORD const err = GetLastError();
std::cerr << "WriteConsole failed with << " << err << "!\n";
return 1;
}
//write to file -
std::fstream myfile;
myfile.open("c:\\Temporary\\out.txt",std::ios::out);
if (myfile.is_open())
{
myfile << line <<"\n"<<std::endl;
}
myfile.flush();
myfile.close();
return 0;
}