România
Roportal.ro

String/Sir de caract?

Început de Ugle, Mie 25 apr 2007 · 8 răspunsuri · 5.920 vizualizări

Ugle6 mesaje#1

Am mai multe stringuri puse intr`un vector si inca o variabila string numita "a"

Eu vreau ca sa afisez toate stringurile din acel vector egale sau care il contin pe "a" ca substring.

Intrebarea mea e ce conditie pun sa fac acest lucru? :crazy:

Pe net am gasit niste functii gen str.fiind(a) care imi returneaza nush ce valoare sau npos(nu am inteles exact)...dar acelea merg doar daca elem din vector erau declarate string...pe cand eu le-am declarat char var1[100] (acum nu stiu daca fac confuzie intre string si sir de caractere oricum sper sa ma lamuriti).

Daca intradevar eu am siruri de caractere cum pot sa fac ceea ce vreau fara sa schimb tipul variabilelor?

radu84360 mesaje#4

1) pai trebuie sa parcurgi vectorul si verifici daca substringul tau e in stringul curent(uite mai jos ce zic astia in standard http://www.msoe.edu/eecs/ce/courseinfo/stl/string.htm)

size_type find (const string& str, size_type pos);

Search for the first occurrence of the substring str in the current string, starting at position pos. If found, return the position of the first character. If not, return a special value (called string::npos). The member function rfind does the same thing, but returns the position of the last occurrence of the specified string.

string str16 = "abcdefghi";

string str17 = "def";

string::size_type pos = str16.find (str17,0);

cout << pos << endl; // 3

pos = str16.find ("AB",0);

if (pos == string::npos) cout << "Not found" << endl;

2) string nu exista in c++ din cate tin eu minte...nu ma am cu c++, sunt un fan inrait delphi :lol:

3) operatiile de cautare pe siruri de caractere(stringuri cum zici tu) nu modifica sirul initial de caractere

Editat Joi 26 apr 2007 07:29

Ugle6 mesaje#5

stiu funtia str.find(a) dar aceasta imi da eroare deoarece variabilele din vectorul meu sunt declarate asa:

"char a1[100];",si astfel la linia "string::size_type pos = str16.find (str17,0);" primesc aceasta eroare

Error:noname00.cpp(11,8 ):Structure required on left side of . or .*

Editat Joi 26 apr 2007 17:17

Ugle6 mesaje#6

pana la urma am rezolvat....functia ep care o cautam era strstr(a,b);

acum am alta problema:

o variabila dintre astea 2 nu este un sir de caractere propriu`zis,ci un un pointer catre primul caracter dintr`un sir de caract.Astfel la linia strstr(a,b); imi da urmatoarea eroare:

Could not find a match for 'strstr(char *,char)'

Cum fac ca din acel char * sa fac char simplu? :lol:

Ma pot ajuta si de alta variabila daca este nevoie :doh:

Ugle6 mesaje#7

Am rezolvat si chestia aia :crazy:

Acum stiti cum fac ca functia strstr(a,b) sa numai tina cont de litere mari sau mici ?

Argv2.495 mesaje#8

Vezi daca nu este o functie stristr; daca nu converteste-le in lowercase: if (isupper(ch)) ch = tolower(ch)

Ugle6 mesaje#9
strcpy(a,x);
  for(v=0;v<=strlen(a);v++)a[v]=toupper(a[v]);
  for(i=1;i<=n;i++)
  {
  	strcpy(b,t[i].str);
	for(v=0;v<=strlen(b);v++)b[v]=toupper(b[v]);
  	find=strstr(b,a);
...................................................

nam gasit asa ceva...pana la urma am mai luat 2 variabile si le`am transformat pe toate in litere mari si am facut

strstr() :swoon:

Acum vreau sa fac si un meniu cam cu 6-7 articole....stiu ca se face cu switch dar in rest nu prea am idei e primu care il fac :focus: .....puteti sa`mi dati niste idei sau daca aveti codul de la niste programe care au meniu....c`as fi recunoscator :blink:

Editat Dum 29 apr 2007 15:32

← Înapoi la Programare