Токенизация строки — это фундаментальная операция в программировании. Однако при работе с функциями C, такими как strtok(), которым требуется строка char*, прямое токенирование std::string может столкнуться с проблемами.
Чтобы использовать strtok() с std::string, одним из вариантов является преобразование его в const char* с помощью .c_str(). Однако это не всегда желательно, поскольку оно обеспечивает представление строки только для чтения.
Более подходящим решением является использование std::istringstream вместо strtok( ). std::istringstream позволяет осуществлять токенизацию std::string на основе потоков. Вот пример:
#include#include #include int main() { std::string myText("some-text-to-tokenize"); std::istringstream iss(myText); std::string token; while (std::getline(iss, token, '-')) { std::cout Этот код создает std::istringstream из std::string и считывает из него токены до тех пор, пока не встретит указанный разделитель (в данном случае '-').
Дополнительные параметры
Для более продвинутых возможностей токенизации такие библиотеки, как Boost, предоставляют комплексные решения, которые предлагают большую гибкость и функции по сравнению с strtok().
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3