Navrh kodu
#include #include #include
using namespace std;
int main() { ifstream input("filename.bin", ios::in | ios::binary); vector buffer; buffer.reserve(1024);
while (input) {
unsigned char c;
input.read(reinterpret_cast<char*>(&c), 1);
buffer.push_back(c);
if ((c >> 7) == 0) {
// 1-byte character
unsigned int code = c;
cout << code << endl;
} else if ((c >> 5) == 0b110) {
// 2-byte character
input.read(reinterpret_cast<char*>(&c), 1);
buffer.push_back(c);
unsigned int code = ((unsigned int)(buffer[0] & 0x1F) << 6) |
(unsigned int)(buffer[1] & 0x3F);
cout << code << endl;
} else if ((c >> 4) == 0b1110) {
// 3-byte character
input.read(reinterpret_cast<char*>(&c), 1);
buffer.push_back(c);
input.read(reinterpret_cast<char*>(&c), 1);
buffer.push_back(c);