0

いくつかのファイルを読み取るプログラムを作成しています。ファイルの 1 つを読んでいるときに、ファイル内にいくつかのウムラウト文字が見つかりました。これらの文字をどのように読み取り、文字列に保存する必要がありますか? 現在string::getline()、これらの文字を読み取ることができないものを使用しており、読み取りポインターの位置が増加していません。文字は、いくつかのスペースが前にある行にあります。だから私はwsスペースを削除するために使用しています。私peekは問題を理解していました。peek o/p char VS2010 にカーソルを合わせると、y に 2 つのドットが表示されました。だから私はそれがウムラウト文字だと思います。

4

1 に答える 1

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;
}
于 2012-05-27T18:09:07.213 に答える