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;
}