如何将 char* 转换为 std::u8string?

Daw*_*wid 5 c++ c-strings utf-8 stdstring c++20

介绍

如果我捕获异常,我想将错误消息(该方法以 C 样式字符串形式返回)转换what()std::u8string(UTF-8 字符串)。例如:std::u8string(error.what());

问题

如何将 a 转换char*为 a std::u8string

附加信息

  • 我只捕获标准库、boost 和 eigen 中的异常。
  • 我的应用程序依赖于 Windows,因此该解决方案不需要是可移植的。

Sam*_*hik 5

您可以使用构造函数,该构造函数采用定义字符串的序列的开始和结束迭代器。

#include <cstring>

// ...

auto cstr=error.what();

std::u8string str{cstr, cstr+strlen(cstr)};
Run Code Online (Sandbox Code Playgroud)