[英]Why does BOOST_FOREACH not work sometimes with C++ strings?
我正在使用BOOST_FOREACH迭代C ++字符串的字符,如下所示:
void foobar(const string& str)
{
BOOST_FOREACH(const char ch, str)
{
// Do something with ch
}
return;
}
這段代碼適用於以下編譯模式:
它僅在此模式下導致運行時錯誤(例外):
上面的代碼片段沒有編譯錯誤或警告,讓我相信BOOST_FOREACH知道它在這里處理的容器。 此外,將const char ch
更改為const char& ch
的行為沒有變化。
為什么這段代碼會導致這種糟糕的運行時行為
為什么只能在Debug DLL模式下?
在C ++字符串上使用BOOST_FOREACH是錯誤的嗎?
如果是,那么最佳解決方法是什么?
(請注意,我正在使用Visual Studio 2008和Boost 1.39。)
在C ++字符串上使用BOOST_FOREACH絕對正確(參見http://www.boost.org/doc/libs/1_39_0/doc/html/foreach.html#foreach.introduction )。
看起來像是問題所在
// Do something with ch
您應該向我們提供有關您的代碼的更多信息,因為:
無論如何,通過你給我們的小信息,我可以猜測以下內容:
當然,你在const字符串上進行迭代意味着什么都不應該被修改,但由於我無法重現你的錯誤(雙關語),很難提供明確的答案。
如果您想了解更多信息,需要向我們提供以下信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.