使用迭代器初始化字符串,出现“转置指针范围”异常

2024-03-26

也许是一个菜鸟问题,但为什么是这两行:

vector<char> v{"h","i"};
string s1(v.cbegin(), v.cend());

不会编译? 它说:

“调试断言失败,异常:转置指针范围”。


调试资源发生在run-time,不是编译时间。
无论如何,你应该改变:

vector<char> v{"h","i"};

to:

vector<char> v{ 'h','i' };

char文字 https://en.cppreference.com/w/cpp/language/character_literal应包含在', not ".
这样您的代码应该可以正确编译和运行。

也可以看看@Eljay 的评论 https://stackoverflow.com/questions/72531788/using-iterator-to-initialize-string-get-transposed-pointer-range-exception/72531885#comment128127160_72531788有关编译器如何实际解释当前代码的更多信息,请参阅上面的内容。

边注:最好避免using namespace std- 看这里为什么是“using namespace std;”被认为是不好的做法? https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用迭代器初始化字符串,出现“转置指针范围”异常 的相关文章

随机推荐