Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/100: Рейтинг темы: голосов - 100, средняя оценка - 4.84
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517

Strtok() и string

16.07.2011, 19:54. Показов 19955. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По заданию нужно воспользоваться именно strtok чтобы разбить строку что есть на слова (ориентируясь на пробелы, все знаки препинания предварительно убираются).
Собственно
C++
1
2
3
4
string str;
...
string str2=strtok(str.c_str()," "); - материться
string str2=strtok(str.data()," "); - и так тоже матерится
Собственно ошибка связана с тем что strtok отказывается жевать const (вообще странно, она же не должна менять строку так не пофиг ли ей const или не const), есть вариант по поводу того как здесь быть? Хотя я и не исключаю варианта того что автор задания имел в виду создание строки в стиле си и последующую её инициализацию данными из моей строки, а потом уже использование с ней strtok, но всё же если у кого есть варианты как получить не const символьные данные из моей строки для strtok то напишите их или если вы уверены что их точно нет то напишите об этом
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.07.2011, 19:54
Ответы с готовыми решениями:

Strtok для string
Есть ли какая-то функция, которая осуществляет strtok для string(из <string>) ?

strtok для string
Существует ли strtok для string? Или его аналог

Использование STRTOK Разбить строку на слова, из слов составить список C++ Функция strtok
Задача Дана строка слов с разделителями, в данном примере слова с пробелами Нужно, используя функцию strtok, сформировать из этих слов...

25
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
16.07.2011, 21:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Gepar Посмотреть сообщение
Книга Дейтела
Может у меня не та книга (Х.М.Дейтел, П.Дж.Дейтел "Как программировать на С++" пятое малое издание), но там такого нет, да и странно было бы. Отлучать от компа надо минимум на год за такие выкрутасы! С и С++ - разные языки, и путать их не за чем.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.07.2011, 21:17

Не по теме:

easybudda, прежде, чем написать своё предыдущее сообщение, я заглянул в задания к разделу std::string и, к сожалению, убедился в том, что такое задание там присутствует...



Добавлено через 47 секунд

Не по теме:

И да, возможно, в малом издании этого нет, но в обычном пятом издании (которое у меня) - есть.

0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
16.07.2011, 21:23
По поводу const_cast... вот такой код уже падает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <cstring>
 
int main()
{
   const char* str = "test string";
   
   char* p = strtok(const_cast <char*> (str), " ");
 
   std::cout << p << std::endl;
 
   return 0;
}
А с std::string все работает, как я понимаю, это потому, что внутри самого string'а указатель на данные не константный и память не является read only(как сказал Kastaneda), а константность берется потому, что тип возвращаемого значения у c_str - const char*, и с помощью const_cast мы убираем эту константность, а в коде выше сами данные const и соответственно read only память.
0
16.07.2011, 21:34

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
прежде, чем написать своё предыдущее сообщение, я заглянул в задания...
А я, когда ты своё сообщение писал, как-раз этот раздел книжки в срочном порядке перечитывал. Несколько раз перелистал - нету... Таки обрезание на пользу пошло... :)

0
16.07.2011, 21:35

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Таки обрезание на пользу пошло...
Видимо, да))

0
16.07.2011, 21:58  [ТС]

Не по теме:

Я хотел 6ое найти, когда начинал изучать с++ оно уже было переведено и напечатано (а 7ое какраз только вышло на английском), но в книжных магазинах города я его не нашёл, а в инете его нету (хотя чтобы я вот это скачал из инета книгу да пользовался ею, да никогда! Я бы так, посмотрел бы есть ли это задание в ней и всё :D), может в 6ом его уже тоже обрезали.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2011, 21:58

Нельзя преобразовать тип Tuple<string,string,string,string> к string
Здравствуйте, у меня возникла проблема. При запуске кода, вылезает ошибка &quot;Нельзя преобразовать тип...

Что такое p=strtok(str," "), p=strtok(0," ")?
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;locale&gt; int main() { setlocale(LC_ALL, &quot;RUSSIAN&quot;); char *p=0,...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Здравствуйте! По C# есть задачка, с которой я так и не разобрался :( Задача: Создайте класс Animal. Добавьте поля string...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population. Создание объектов может происходить как без...

Ошибка PHPOfice: Cannot use PhpOffice\PhpWord\Shared\String as String because 'String' is a special class name
Fatal error: Cannot use PhpOffice\PhpWord\Shared\String as String because 'String' is a special class name in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru