Funkcja substr działa na typie string. Nie mogę wykombinować co zrobić, aby w moim programie zadziałało tak jak w tym kawałku kodu.

#include <iostream>
#include <string.h>
using namespace std;

int main()
{   string p,s;
    int i;

    srand((unsigned)time(NULL));

    for(i = 0; i < 80; i++) s += char(65 + (rand() % 3));
    for(i = 0; i < 3; i++) p += char(65 + (rand() % 3));

    cout << p << endl;
    cout << s;

    for(i = 0; i < 78; i++)
    cout << (p == s.substr(i,3) ? "^" : " ");

    cout << endl << endl;
    system("pause");
    return 0;
}

Mój program wygląda tak...I przerywa działanie. Konwersja z char do string chyba dobrze zrobiona. Program otwiera plik a nastepnie ma wyszukać w nim wzorzec.

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<cstdlib>
#include <string>
#include <vector>
#include <fstream>
#include <windows.h>

using namespace std;

int main ()
{
    char linia1[100];
    char wzorzec[100];
    cout<<"podaj wzorzec"<<endl;
    cin>>wzorzec[100];
    string w(wzorzec);//konwersja do stringa

    fstream plik1;
    plik1.open("dane.txt", fstream::in);
    if (plik1.fail())
    {
        cout << "\nBlad otwarcia pliku! Nastapi zamkniecie programu.";
        system("pause");
        return 1;
    }
    cout <<"Zdanie wczytane z pliku 'dane.txt': \n\n" ;
    while (!plik1.eof())
    {
        plik1.getline(linia1, sizeof linia1);
        CharToOem(linia1,linia1);

        string p(linia1);//konwertuje do stringa

        cout<<p <<endl;

        for(int i = 0; i < 78; i++)// te dwie linijki
            cout << (w == p.substr(i,3) ? "^" : " ");// jakby działały....
    }

    system ("pause");
    return 1;
}