C 使用默认限制的迭代器创建一个空的std :: String
C++ using default-initialized iterators to create an empty std::string
以下代码有效且定义明确?
auto start = std::string::const_iterator();
auto end = std::string::const_iterator();
auto output = std::string(start, end);
(预期输出是一个空字符串。(
根据cppreference.com(随机访问迭代器(,其中字符串迭代器是一个,符合双向迭代器的所有要求。
此外,双向迭代器符合前迭代符的所有要求。
最后,由于C 14,可以进行价值键入的迭代器,并将与所有其他类型的所有其他价值定位式迭代器进行比较:
:一个价值限制的遗产透明术语的行为与 某些未指定的空容器的过去终结迭代器:它比较 等于相同的所有价值限制遗留术语 类型。
基于此,我相信至少在C 14。
相关文章:
- 如果我注释掉换行符,为什么'string'会成为一个不合格的变量
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 从 C 字符串构造 std::string 与从另一个 std::string 构造 std::string 不一致
- 将(临时的?)std::string传递给使用它来构造一个接受副本的对象的函数的最佳方法是什么?
- cv::String 和 std::string:何时使用哪一个以及必须同时使用两者?
- 为什么一个表达式中的 std::string 连接给出的结果与逐个字符不同的结果?
- 实现一个想要模拟 std::string 但在将其push_back向量时卡住的类
- std::string_view 的优点 当传递给另一个采用 std::string 的函数时
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 为什么在这个分解的 std::string dtor 中有一个锁定的 xadd 指令?
- 返回一个 std::string,转换为 char*
- C 使用默认限制的迭代器创建一个空的std :: String
- 字符串构造函数将两个字符* 放入另一个 std::string 在 C++14 中有效,但不适用于 C++17
- 为什么string.empty()在字符串包含一个值时评估为true
- "vector<string>"作为函数参数传递,我得到一个错误
- 我收到一个" conversion from ‘std::string (*)[50]’ to non-scalar type ‘std::string’ requested"错误,似乎无法修复它
- 将 C++ std::string 中的字符/字符序列替换为另一个字符序列
- 用一个字符制作 std::string 的最佳方法是什么?
- std::move在将std::string移动到另一个线程时出错
- 将一个char和一个int组合成一个string