I want to write std::wstring to a file and read this content as std:wstring . This happens as expected when the string L"<Any English letter>" . But the problem happens when we have a character like Bengali, Kannada, Japanese, etc., Any non-English letter. Tried various options, for example:
- Convert
std::wstring to std::string and write to file and read time are considered as std::string and convert as std::wstring- Writing occurs (I could see from edito), but the read time becomes incorrect.
- Writing
std::wstring on wofstream, this also does not help the letters of the native language, such as std::wstring data = L"হ্যালো ওয়ার্ল্ড";
The platform is mac and Linux, the language is C ++
the code:
bool write_file( const char* path, const std::wstring data ) { bool status = false; try { std::wofstream file(path, std::ios::out|std::ios::trunc|std::ios::binary); if (file.is_open()) { //std::string data_str = convert_wstring_to_string(data); file.write(data.c_str(), (std::streamsize)data.size()); file.close(); status = true; } } catch (...) { std::cout<<"exception !"<<std::endl; } return status; } // Read Method std::wstring read_file( const char* filename ) { std::wifstream fhandle(filename, std::ios::in | std::ios::binary); if (fhandle) { std::wstring contents; fhandle.seekg(0, std::ios::end); contents.resize((int)fhandle.tellg()); fhandle.seekg(0, std::ios::beg); fhandle.read(&contents[0], contents.size()); fhandle.close(); return(contents); } else { return L""; } } // Main int main() { const char* file_path_1 = "./file_content_1.txt"; const char* file_path_2 = "./file_content_2.txt"; //std::wstring data = L"Text message to write onto the file\n"; // This is happening as expected std::wstring data = L"হ্যালো ওয়ার্ল্ড"; // Not happening as expected. // Lets write some data write_file(file_path_1, data); // Lets read the file std::wstring out = read_file(file_path_1); std::wcout<<L"File Content: "<<out<<std::endl; // Let write that same data onto the different file write_file(file_path_2, out); return 0; }
c ++ clang ++ wifstream wofstream
Abhrajyoti kirtania
source share