代码之家  ›  专栏  ›  技术社区  ›  Brian Stewart

从boost::tokenizer检索迭代器时msvcp90d.dll崩溃

  •  2
  • Brian Stewart  · 技术社区  · 16 年前

    程序如下:

    #include <sstream>
    #include <boost/tokenizer.hpp>
    #include <boost/algorithm/string.hpp>
    
    
    int main(int argc, char* argv[])
    {
        std::string data("gobo;wimbley;red;moki;boober");
        std::ostringstream input;
        input << data;
    
    
        std::string mystr(input.str());
        boost::char_separator<char> separator(";");
        boost::tokenizer<boost::char_separator<char>> tok(mystr, separator);
        boost::tokenizer<boost::char_separator<char>>::iterator iter = tok.begin();
    }
    

        boost::tokenizer<boost::char_separator<char>> tok(data, separator);
    

    1 回复  |  直到 16 年前
        1
  •  3
  •   James McNellis    16 年前

    a bug in Visual C++ 随着 std::ostringstream _HAS_ITERATOR_DEBUGGING

    std::string copy构造函数复制迭代器。您可以通过使用 char*

    std::string mystr(input.str());
    

    std::string mystr(input.str().c_str());