Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Помогите с кодом(некоректная работа проги)


Автор: RVR 15.7.2007, 22:57
Так от нечего делать решил че-нить написать на 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() подробно.


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

Код

strQuestn=string(chrQuestn);

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

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

Автор: RVR 16.7.2007, 00:17
Romikgy
Цитата

strQuestn=chrQuestn;

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


Автор: jonie 16.7.2007, 00:22
Цитата

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
а дальше сами думайте)

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

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

(size_t)0 - 1.


Автор: RVR 16.7.2007, 01:30
Нашел ответ сам на интересном сайте 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 

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


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)