Тема: Робота з wchar_t, як записати у файл
Якщо використати той самий код для запису wchar_t у файл що і для char, то у файл не будуть записуватися Unicode символи. Якщо вказати що це бінарний файл і першим символом записати 0xFEFF (Byte order mark), то потрібно ще вказувати буфер, тому що у файл взагалі нічого не запишиться.
Наприклад:
Запис у файл послідовності символів char.
Тут не потрібно вказувати буфер. Запис відбувається за допомогою класу wofstream
char sometext[] = "text";
char* ref_for_purity_of_experiment = sometext;
wofstream fs;
fs.open(
"t.txt",
std::wofstream::in |
std::wofstream::out |
std::wofstream::app
);
fs << ref_for_purity_of_experiment << ";\r\n";
fs.close();
Запис у файл послідовності символів wchar_t .
Тут потрібно вказувати буфер. Запис відбувається за допомогою класу wofstream
wchar_t sometext[] = L"text";
wchar_t * ref_for_purity_of_experiment = sometext;
wofstream fs;
fs.open(
"t.txt",
std::wofstream::in |
std::wofstream::out |
std::wofstream::app |
std::wofstream::binary
);
int arrSize = 128;
wchar_t *buffer1 = new wchar_t[arrSize];
fs.rdbuf()->pubsetbuf(buffer1, arrSize);
fs.put(0xFEFF);
fs << ref_for_purity_of_experiment << ";\r\n";
Питання: можна записувати wchar_t до файлу без явного вказання буферу, так як звичайний текстовий файл ? Якщо можна, то як ?
std::string - не підходить. Я роблю DLL для сторонньої програми, і якщо я приймаю std::string то програма крашиться