UTF-8 совместим с ASCII, поэтому вы можете читать файл UTF-8 так же, как файл ASCII. C ++ способ прочитать весь файл в строку:
#include <iostream>
#include <string>
#include <fstream>
std::ifstream fs("my_file.txt");
std::string content((std::istreambuf_iterator<char>(fs)), std::istreambuf_iterator<char>());
Результирующая строка содержит символы, соответствующие байту UTF-8. Вы могли бы пройти через это так:
for (std::string::iterator i = content.begin(); i != content.end(); ++i) {
char nextChar = *i;
// do stuff here.
}
Кроме того, вы можете открыть файл в двоичном режиме , а затем перемещаться по каждому байту следующим образом:
std::ifstream fs("my_file.txt", std::ifstream::binary);
if (fs.is_open()) {
char nextChar;
while (fs.good()) {
fs >> nextChar;
// do stuff here.
}
}
Если вы хотите делать более сложные вещи, я советую взглянуть на Qt . Я нашел это довольно полезным для такого рода вещей. По крайней мере, менее болезненный, чем ICU , для выполнения в основном практических дел.
QFile file;
if (file.open("my_file.text") {
QTextStream in(&file);
in.setCodec("UTF-8")
QString contents = in.readAll();
return;
}