Program Listing for File string.cpp¶
↰ Return to documentation for file (SeQuant/core/utility/string.cpp)
#include <SeQuant/core/utility/macros.hpp>
#include <SeQuant/core/utility/string.hpp>
#include <algorithm>
#include <limits>
#include <string>
#include <utfcpp-src/source/utf8.h>
namespace sequant {
std::string toUtf8(const std::wstring_view str) {
SEQUANT_ASSERT(std::none_of(str.begin(), str.end(), [](wchar_t c) {
return c > std::numeric_limits<char16_t>::max();
}));
std::u16string u16str(str.begin(), str.end());
auto stream = utf8::utf16to8(u16str);
return std::string(stream.begin(), stream.end());
}
std::wstring toUtf16(const std::string_view str) {
auto stream = utf8::utf8to16(str);
static_assert(sizeof(wchar_t) >= sizeof(char16_t));
return std::wstring(stream.begin(), stream.end());
}
} // namespace sequant