«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как токенизировать `std::string` с помощью функций C?

Как токенизировать `std::string` с помощью функций C?

Опубликовано 10 ноября 2024 г.
Просматривать:565

How to Tokenize a `std::string` with C Functions?

Токенизация std::string с помощью функций C

Токенизация строки — это фундаментальная операция в программировании. Однако при работе с функциями C, такими как strtok(), которым требуется строка char*, прямое токенирование std::string может столкнуться с проблемами.

strtok() с 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