[英]C++ assertion crash when using boost regex lib
我剛剛在我的新筆記本電腦上安裝了boost
lib 和visual studio
。
嘗試運行我的代碼時出現以下錯誤:
Assertion failed: r != 0, file libs\regex\build\..\src\w32_regex_traits.cpp, line 125
在 debug 32bit 中運行時會發生該錯誤,但在使用 release 而不是 debug 時有效。 這是我的片段:
#include <iostream>
#include <boost/regex.hpp>
int main()
{
boost::regex("hello word", boost::regex::icase);
}
我嘗試重新安裝 VS2019 和boost
lib,但問題仍然存在。
任何想法可能是錯誤的原因?
斷言在這里:
#ifndef BOOST_NO_ANSI_APIS
int r = ::LCMapStringA(this->m_locale, LCMAP_LOWERCASE, char_map, 1 << CHAR_BIT, this->m_lower_map, 1 << CHAR_BIT);
BOOST_ASSERT(r != 0);
#else
看起來LCMapStringA function失敗了。
如果不成功,這個 function 返回 0。 要獲取擴展錯誤信息,應用程序可以調用 GetLastError,它可以返回以下錯誤代碼之一:
ERROR_INSUFFICIENT_BUFFER
。 提供的緩沖區大小不夠大,或者它被錯誤地設置為 NULL。ERROR_INVALID_FLAGS
。 為標志提供的值無效。ERROR_INVALID_PARAMETER
。 任何參數值無效。
我不認為這些條件是可以忽略的。 它們可能會導致未定義的行為。 因此,也許您可以在無法獲取更多信息時使用調試器獲取GetLastError
的值。
取決於你失敗的類型
將區域格式從英語(XXXX)區域更改為英語(美國)后問題已解決
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.