Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Разделить строку типа string на лексемы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разделить строку типа string на лексемы http://www.cyberforum.ru/cpp-beginners/thread1237480.html
Есть строка string, нужно разбить её на лексемы. У меня не получается использовать strtok с типом string.
C++ Использование string в многофайловом приложении. Необходимость подключения библиотек и пространства имён Здравствуйте. Есть заголовочный и cpp файлы. В заголовочном пишу#ifndef MODEL_H #define MODEL_H struct Vertex { float x, y, z; Vertex(float x = 0.0f, float y = 0.0f, float z = 0.0f) {... http://www.cyberforum.ru/cpp-beginners/thread1237478.html
C++ Преобразование long double в char
Вернемся к обсуждению денежных строк из упражнения 6. Напишите ме- од ldtoms() для преобразования числа типа long double в денежную строку, представляющую это число. Для начала вам нужно проверить,...
Rand() создает одинаковые числа C++
inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_.val = rand() % (SPADES - CLUBS) + CLUBS; suit_.lexcast(); } При создании нескольких объектов Playing_card, во...
C++ Странное поведение в коде http://www.cyberforum.ru/cpp-beginners/thread1237410.html
Есть два класса: ArrayList<T> и Array<T> (реализация в конце поста). И есть такой код: ArrayList<int> list = { 1, 2, 3 }; Array<int> arr = list.clone().asArray(); cout << arr; // Вывод...
C++ Как загрузить DLL? Я раньше с DLL дела не имел, но вот тут такая задача появилась. Есть DLL который сканирует процессы и что то там делает Как мне его загрузить/запустить или что там делать нада? я просто вобще не... подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
02.08.2014, 01:36
Цитата Сообщение от Artmem Посмотреть сообщение
А если не использовать strtok, то как можно разделить тип string на лексемы?
Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
std::vector<std::string> split(std::string const& input, std::string const& separators) {
   std::vector<std::string> result;
   
   std::string::size_type first = 0;
   std::string::size_type last  = 0;
   while ((first = input.find_first_not_of(separators, last)) != std::string::npos) {
       last = input.find_first_of(separators, first);
       
       std::string const token(input, first, last - first);
       result.push_back(token);
       
       first = last;
   }
   
   return result;
}
либо можно скопировать содержимое string в массив символов и использовать strtok c этим массивом
C++
1
2
3
4
5
6
char * array = new char[input.length() + 1];
strcpy(array, input.c_str());
 
// ...
 
delete[] array;
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru