14 / 14 / 3
Регистрация: 12.07.2009
Сообщений: 114
|
||||||
1 | ||||||
warning strtok13.10.2011, 00:03. Просмотров 1312. Ответов 10
Метки нет Все метки)
(
Пишу в 10 студии:
0
|
|
13.10.2011, 00:03 | |
Использование STRTOK Разбить строку на слова, из слов составить список C++ Функция strtok Warning C4101 и warning C4996 strtok strtok |
|
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
13.10.2011, 00:06 | 2 |
Строка "bla bla bla" является константной. А функция strtok изменяет строку. Получается, что strtok пытается изменить константную строку. Поэтому и ошибка.
Варнинг говорит, что эта функция может быть опасной. Действительно, она изменяет строку, которую получает первым параметром.
1
|
14 / 14 / 3
Регистрация: 12.07.2009
Сообщений: 114
|
||||||
13.10.2011, 00:13 [ТС] | 3 | |||||
если объявить
0
|
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|||||||||||
13.10.2011, 00:19 | 4 | ||||||||||
Еще раз повторю: варнинг не имеет отношение к этой ошибке. Варнинг просто есть и все. Просто предупреждение для программиста.
А то что вы и так и так написали, то разницы нет. Вы и в том и в том случае пишите "bla bla bla". Во втором случае используете указатель на эту строку. Но если указатель
Дело не в указателе bla, а в строку "bla bla bla"
0
|
14 / 14 / 3
Регистрация: 12.07.2009
Сообщений: 114
|
||||||
13.10.2011, 00:33 [ТС] | 5 | |||||
у меня есть класс, в конструкторе я делаю
0
|
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||||||
13.10.2011, 00:35 | 6 | |||||
Указатель на что указывает? Покажите то место, где вы создаете строку и вызываете этот метод.
И еще, зачем вы каждый раз в цикле вызываете strtok(str, ";"); ? Достаточно только 1 раз вызвать, а потом вызывать strtok(NULL, ";");. В итоге так должно быть:
0
|
446 / 209 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|||||||||||
13.10.2011, 00:43 | 7 | ||||||||||
Это же у вас конструктор, и вы туда наверняка передаете строку в кавычках
А внутри функции пытаетесь изменить эту строку "aa;bb", но так делать нельзя попробуйте что-то типа
2
|
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||||||
13.10.2011, 00:45 | 8 | |||||
Так правильнее
2
|
14 / 14 / 3
Регистрация: 12.07.2009
Сообщений: 114
|
|
13.10.2011, 00:46 [ТС] | 9 |
точно) просто я думал, что если параметр конструктора char*, то даже если передадим строку, он не будет константным... спасибо!
0
|
446 / 209 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
13.10.2011, 00:57 | 10 |
в спешке забыла про delete. точно(
0
|
![]() |
|
13.10.2011, 09:28 | 11 |
Добавлю, что strtok заменяет символы разделители на символ '\0', а если объявить строку типа
char *s = "abc...", то компилятор может ее поместить в область памяти read only (только для чтения) и изменять символы будет нельзя, поэтому запись strtok(s, " ") ошибочна.
0
|
13.10.2011, 09:28 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. strtok strtok Проблема с Strtok Strtok() и string Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |