mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 22:59:56 +08:00
66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
//
|
|
// Created by danya on 27.06.2021.
|
|
//
|
|
|
|
#include "StringAdaptor.h"
|
|
#include <codecvt>
|
|
|
|
StringAdaptor::StringAdaptor(const std::string &s) {
|
|
w_str = nullptr;
|
|
str = new char[s.length() + 1];
|
|
std::strcpy(str, s.c_str());
|
|
update_wstr();
|
|
}
|
|
|
|
StringAdaptor::StringAdaptor(const std::wstring &s) {
|
|
str = nullptr;
|
|
w_str = new wchar_t[s.length() + 1];
|
|
std::wcscpy(w_str, s.c_str());
|
|
update_str();
|
|
}
|
|
|
|
StringAdaptor StringAdaptor::FromGString(GString &s) {
|
|
return StringAdaptor(s.getCString());
|
|
}
|
|
|
|
StringAdaptor StringAdaptor::FromGString(GString *s) {
|
|
return StringAdaptor(s->getCString());
|
|
}
|
|
|
|
GString StringAdaptor::get_gstring() {
|
|
return GString(str);
|
|
}
|
|
|
|
char* StringAdaptor::get_char_string() {
|
|
return str;
|
|
}
|
|
|
|
wchar_t * StringAdaptor::get_wchar_string() {
|
|
return w_str;
|
|
}
|
|
|
|
std::wstring StringAdaptor::get_wstring() {
|
|
return std::wstring (w_str);
|
|
}
|
|
|
|
void StringAdaptor::update_wstr() {
|
|
delete[] w_str;
|
|
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
|
|
std::wstring tmp = converter.from_bytes(str);
|
|
w_str = new wchar_t[tmp.length() + 1];
|
|
std::wcscpy(w_str, tmp.c_str());
|
|
|
|
}
|
|
|
|
void StringAdaptor::update_str() {
|
|
delete[] str;
|
|
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
|
|
std::string tmp = converter.to_bytes(w_str);
|
|
str = new char[tmp.length() + 1];
|
|
std::strcpy(str, tmp.c_str());
|
|
}
|
|
|
|
StringAdaptor::~StringAdaptor() {
|
|
delete[] str;
|
|
delete[] w_str;
|
|
} |