提问人:Cobra_Fast 提问时间:10/29/2022 更新时间:10/29/2022 访问量:268
basic_string.h 断言“!empty()”失败
basic_string.h Assertion '!empty()' failed
问:
刚刚重新编译了我的一个旧程序,该程序曾经运行良好。
但是,现在它几乎立即在以下代码上崩溃:
std::ifstream ifs(path);
std::string line;
while (std::getline(ifs, line))
{
if (line.front() == '#') // crash
continue;
//...
}
崩溃消息为:
/usr/src/debug/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:1280: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::front() [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; reference = char&]: 断言 '!empty()' 失败。
到目前为止,我尝试过:
- 使用 GCC11 而不是 12 进行编译。
- 设置
-U_GLIBCXX_ASSERTIONS -U_GLIBCXX_DEBUG
发生了什么变化?我一直做错了什么吗?
答: 暂无答案
评论
line.front()
line
if( line.empty() || line.front() == '#' )