![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Все проблемы текстового квеста растут из ввода команд. Как показала практика, использование двух переменных - очень неудобно:
Код:
Я попробовал использовать одну переменную, вводил её при помощи wcin.getline(p1,99). Вот я ввожу команду: возьми гитару "возьми" и "гитара" - такие символьные переменные есть. Это всё сохраняется в одной переменной, и функция wcsncmp(part1,take,4) видит слово "возьми", слава Богу, однако wcsncmp(part1,guitar,4) слово "гитару" не видит в упор, и, как результат, работа стопорится. Не подскажете, как же всё-таки грамотно построить алгоритм анализа? Последний раз редактировалось Кипящий чайник; 20.02.2010 в 20:03. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
![]()
Используй юникодный вариант функции strtok, ну или wcstok, она разбивает исходную на подстроки, примеры ищи где-нибудь
![]() Я лишь дал пищу для гугля ![]()
Если я помог вам - порадуйте меня, нажмите на весы слева
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
К сожалению, паства на гугле дала скудные результаты - в частности, примеры были устаревшими и не компилировались из-за ошибок.
Так что, видимо, всё же придётся вам подкинуть парочку примеров чайнику. ![]() Последний раз редактировалось Кипящий чайник; 21.02.2010 в 10:59. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]()
пример в msdn'е есть на счет strtok, там свежачок и все компилится
![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Ну, там же strtok, а wcstok таки да отличается от strtok дополнительным параметром, и соответсвенно, манерой использования...
Последний раз редактировалось Кипящий чайник; 21.02.2010 в 12:39. |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Я всё же не пойму, почему вы не используете стандартную библиотеку Си++? Это ведь намного удобнее, проще и меньше вероятность ошибки
Код:
или, если уж на то пошло, то wcstok и strtok имеют одинаковое кол-ство параметров. http://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Ну, на первый вопрос ответить просто - я этакий олдфаг, мне к тому же очень Си нравится. Не люблю модные фичи С++, на раз уж без них нельзя...
А во-вторых, ваш способ вызывает у меня сомнения. Так ли уж он отличается от scanf("%S%S",command,object)? И надёжен ли он - запишется ли то, что нужно, куда нужно, а не в одну переменную, как это иногда бывает? Мне нужна стопроцентная надёжность. |
![]() |
![]() |
![]() |
#8 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
В моём случае это был не scanf, а wscanf, и там вводилась команда о двух частях:
Код:
|
![]() |
![]() |
![]() |
#10 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
Прежде чем браковать библиотечные ф-ции, проверьте на ошибки свои, вероятность, что проблема именно в них значительно выше. Есть ли какая-нибудь закономерность при возникновении этой ошибки? |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузить файл в одну строку на Perl | Sergey2 | Perl | 4 | 16.07.2009 21:03 |
Как в C++ организовать ввод данных в одну строчку? | amdbodia | Общие вопросы C/C++ | 10 | 16.05.2009 18:03 |
Уникальные значения в одну строку | Iskin | Microsoft Office Excel | 9 | 08.03.2009 09:39 |
Ввод текста и ссылки в одну ячейку | Апчхи | Microsoft Office Excel | 5 | 03.02.2009 10:44 |
Запись в одну строку | Terran | Общие вопросы Delphi | 2 | 08.05.2008 23:35 |