我可以从 nullptr 构造 string_view 吗?

Lot*_*har 5 c++ string view

我刚刚发现 xcode/clang 不允许从 char* nullptr 构造 std::string_view。我希望这将 size() 设置为 0 并为 data() 返回空值,这也是我的 Ubuntu Linux 机器上的 gcc 7.2 如何实现它。

我检查了http://en.cppreference.com/但找不到任何关于此的评论,那么标准说法是什么?

Rak*_*111 8

嗯,是的,也不是。您不能将空指针传递给std::string_view的构造函数,因为这会违反它们的先决条件;请参阅[string.view.cons]中的构造函数 2 和 3

但是std::string_view的默认构造函数将其数据的大小设置为零和 null,因此您必须改用该构造函数,或者使用以下解决方法/技巧:

std::string_view().swap(your_string);
Run Code Online (Sandbox Code Playgroud)

  • 有一个[提案](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0903r0.pdf)允许`nullptr`作为`basic_string_view`的单个构造函数参数* *和** `basic_string`。 (7认同)
  • 您可以简单地执行“your_string_view = {};”而不是交换技巧。 (5认同)