Mer*_*old 4 c++ visual-studio-2013
我正在尝试编译一些最初使用Visual Studio 2013在MS Visual Studio C++ 6.0中构建的代码.
在旧代码中,以下构造通常用于各种数据类型(例如,对于字符串):
std::string someString;
someString = ....;
callSomeFunction(someString.begin().base());
Run Code Online (Sandbox Code Playgroud)
因此,为了使函数能够编辑(在此示例中为字符串)原始缓冲区,该方法begin()获取它的迭代器,并且该方法base()返回指向缓冲区的第一个元素的指针.
在代码中,这不仅用于字符串,还用于许多其他数据类型.因此我想知道,如果对标准库进行了更改,那么该base()方法将不再受支持?
它有替代品吗?或者我必须在这里更改代码吗?由于这是经常使用的,我宁愿找到一个更简单的解决方案.
目前我收到如下错误:
错误3错误C2039:'base':不是'std :: _ Vector_iterator >>的成员
base容器迭代器没有标准化.它适用于迭代器适配器,如std::reverse_iterator和std::move_iterator.Microsoft必须将其从实现中删除才能符合ISO C++标准.
要从容器迭代器获取指针,只需使用&* iter.要获取指向支持容器的连续数组的第一个元素的指针,请使用cont.data().
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |