Joshua Segal
Joshua Segal

Reputation: 99

How to read in Hebrew letters in Visual Studios C++

I'm trying to read in a Hebrew text file, do some modifications, then send it to another text file. I've been successful in displaying Hebrew letters using UTF8, but I can't seem to read them in. This code successfully prints out the Hebrew letters to the txt file that it was redirected to, but when I try to read in Hebrew from another text file (that was redirected in) I get random garbage. How do I fix this?

#include <iostream>
#include <string>
#include <fcntl.h>
#include <io.h>
#include <fstream>
using namespace std;

int main() {
    _setmode(_fileno(stdout), _O_U8TEXT);
    wprintf(L"\x05D0");//works with courier new in terminal
    wchar_t example[] = L"א";
    wcout << endl << example << endl;
    wstring x;
    getline(wcin, x);
    wcout << x;
    return 0;
}

Output

א
א
×××× ×©××ת ×× × ×שר×× ××××× ×צר××× ×ת ××¢×§× ××ש ××××ª× ××× â¬

Upvotes: 0

Views: 506

Answers (1)

Joshua Segal
Joshua Segal

Reputation: 99

The problem has been figured out. It was what Barmak Shemirani said almost. I put in _setmode(_fileno(stdin), _O_U16TEXT); and changed my output to U16 and then still got garbage then I changed them both to U8 and I was able to read in and out perfectly.

Upvotes: 1

Related Questions