Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с кодом(некоректная работа проги) 
V
    Опции темы
RVR
Дата 15.7.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007

Репутация: нет
Всего: нет



Так от нечего делать решил че-нить написать на C++.
Суть проги в том, что вводится предложение(с пробелами!), и нужно в нем найти определенное слово(в данном случае "test"). НО блин прога работает не корректно. Никак не пойму в чем дело.


Код

#include<iostream>
#include<conio>
#include<string>
using namespace std;

void main()
{
  char chrQuestn[100]; 
  char* test="test";
  string strQuestn; 
  string answer; 

  while(true)
  {
    cout<<"Answer the question: \n";
    cin.getline(chrQuestn,100);

    strQuestn=chrQuestn;    //сдеся происходит невероятное, уму непостижимое :wizard  преобразование из char* в string

    if(strQuestn.find(test,0))cout<<"Test successful\n";
    else cout<<"Scripting serror\n";
  }


  getch();
}



Еще было бы здорово если б кто-нибудь рассказал про функцию .find() подробно.


PM MAIL   Вверх
Romikgy
Дата 15.7.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(RVR @  15.7.2007,  21:57 Найти цитируемый пост)
strQuestn=chrQuestn;

Код

strQuestn=string(chrQuestn);

Цитата(RVR @  15.7.2007,  21:57 Найти цитируемый пост)
про функцию .find() подробно.

имхо ищет первое вхождение строки test начиная с 0 символа


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
RVR
Дата 16.7.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007

Репутация: нет
Всего: нет



Romikgy
Цитата

strQuestn=chrQuestn;

Не помогло. 
Подробно описываю что происходит при запуске после компиляции(может поможет лучше понять суть проблемы):
1. Если просто пишу первым словом "test", пишет что ничегошеньки не найдено("Scripting error")
2. Если пише другое слово(не "test"), пишет что все здорово("Test successful")


PM MAIL   Вверх
jonie
Дата 16.7.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата

size_type find(
   value_type _Ch, 
   size_type _Off = 0
) const;

The index of the first character of the substring searched for when successful; otherwise npos.
ЗЫ npos = (long)(int)-1; т.е. true
а дальше сами думайте)

Это сообщение отредактировал(а) jonie - 16.7.2007, 00:23


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
JackYF
Дата 16.7.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(jonie @  16.7.2007,  00:22 Найти цитируемый пост)
npos = (long)(int)-1;

э-э smile имхо, 
Цитата

(size_t)0 - 1.




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
RVR
Дата 16.7.2007, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007

Репутация: нет
Всего: нет



Нашел ответ сам на интересном сайте http://www.cplusplus.com/.
 smile Теперь все работает(вроде)
Если кому интересно вот листинг:
Код

#include<iostream>
#include<conio>
#include<string>
using namespace std;

void main()
{
  char chrQuestn[100]; 
  string test("test");
  string strQuestn;

  size_t found;

  while(true)
  {
    cout<<"Answer the question: \n";
    cin.getline(chrQuestn,100);

    strQuestn=string(chrQuestn); 

    found=strQuestn.find(test);
    if(found!=string::npos)cout<<"Test successful\n";
    else cout<<"It doesn't work..\n";
  }

  getch();
}
 smile 
PM MAIL   Вверх
JackYF
Дата 16.7.2007, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(RVR @  16.7.2007,  01:30 Найти цитируемый пост)
Нашел ответ сам на интересном сайте


Капец.
А jonie тебе что написал?. Некрасиво получается.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1177 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.