Я использовал алгоритм «boost ::gorith :: trim» в большей экосистеме, где он получает строку, обрезает все начальные или конечные пробелы и добавляет полученную строку в список, подобный этому;
std::stringstream protocolStream(str);
std::vector<int> protocols;
std::string protocol;
while(std::getline(protocolStream, protocol, ',')) {
boost::algorithm::trim(protocol);
protocols.push_back(std::atoi(protocol.c_str()));
}
Однако, это приводит к появлению ядра, которое имеет следующие кадры, связанные с обрезкой:
0 0x0000000801f2163f in __getCurrentRuneLocale () at ../stdhdrs/freebsd/runetype.h:102
1 __maskrune (_f=16384, _c=<optimized out>) at ../stdhdrs/freebsd/_ctype.h:108
2 __istype (_f=16384, _c=<optimized out>) at ../stdhdrs/freebsd/_ctype.h:129
3 std::ctype<char>::is (this=<optimized out>, __m=16384, __c=<optimized out>) at ../stdhdrs_cplus/freebsd/bits/ctype_inline.h:51
4 boost::algorithm::detail::is_classifiedF::operator()<char> (this=<optimized out>, Ch=<optimized out>) at ../headers/boost/algorithm/string/detail/classification.hpp:45
5 boost::algorithm::detail::trim_end_iter_select<__gnu_cxx::__normal_iterator<char*, std::string>, boost::algorithm::detail::is_classifiedF> (InEnd=0 '\000', InBegin=..., IsSpace=...) at ../headers/boost/algorithm/string/detail/trim.hpp:53
6 boost::algorithm::detail::trim_end<__gnu_cxx::__normal_iterator<char*, std::string>, boost::algorithm::detail::is_classifiedF> (InBegin=..., InEnd=0 '\000', IsSpace=...) at ../headers/boost/algorithm/string/detail/trim.hpp:86
7 boost::algorithm::trim_right_if<std::string, boost::algorithm::detail::is_classifiedF> (Input="9", IsSpace=...) at ../headers/boost/algorithm/string/trim.hpp:237
8 0x0000000801f214fb in boost::algorithm::trim_if<std::string, boost::algorithm::detail::is_classifiedF> (Input="9", IsSpace=...) at ../headers/boost/algorithm/string/trim.hpp:360
9 0x0000000801e384f4 in boost::algorithm::trim<std::string> (Input=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a50021>, Loc=...) at ../headers/boost/algorithm/string/trim.hpp:375
Я не могу понять, почему. Обратите внимание, что переменная 'str' будет иметь значение, подобное этому '1, 2, 3, 4'.
Может кто-нибудь выяснить, в чем именно заключается проблема.