也许是一个菜鸟问题,但为什么是这两行:
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(使用前将#替换为@)