PDA

Visualizza la versione completa : [C / C++]Stringhe.... difficile !!


CrashOverride
24-03-2004, 18:47
ciao,

mi st avvicinando al c / c++ (dipende dalle esigenze), e una prima carenza che mi sembrato di notare la gestione delle stringhe.
Precedentemente io utilizzavo Java, che nonostante i suoi limiti fisiologici aveva un buon sistema di librerie di supporto per la gestione dele stringhe.
Non esiste in C/C++ una libreria che semplifichi la vita ?? a volte un po' scomodo vedere le stringhe come array di char !! :(

Ikitt
24-03-2004, 18:48
Originariamente inviato da CrashOverride
Non esiste in C/C++ una libreria che semplifichi la vita ??

C: glib ad esempio.
C++: std::string.

CrashOverride
24-03-2004, 18:57
ok, ma ho detto che mi st avvicinando al C, fammi qualche esempio, che s....come la dichiaro una variabile di tipo "string" ??

Sergio Pedone
24-03-2004, 19:03
#include <string>

std::string stringa = "Ciao";

:ciauz:

iguana13
24-03-2004, 19:10
La gestione delle stringhe in C++ per me ottima e completa, ma non possiamo spiegartela tutta qui!
Vedi link: www.cppreference.com

:ciauz:

Michele Facchin
24-03-2004, 19:18
Originariamente inviato da CrashOverride
ok, ma ho detto che mi st avvicinando al C, fammi qualche esempio, che s....come la dichiaro una variabile di tipo "string" ??



typedef char * String;

int main (void) {
String str = "ciao";
printf ("%s", str);
return (0);
}


Naturalmente devi utilizzare la libreria "string.h" per fare operazioni su di esse.
Ciao!

iguana13
24-03-2004, 19:44
Credo che intendesse stringhe C++, membri della classe string!

CrashOverride
24-03-2004, 20:18
grazie a tutti.
faccio qualche prova.
ciao.

CrashOverride
25-03-2004, 21:05
ok, ci siamo quasi....

ho seguito i consigli di Michele e ho buttato gi qualcosa del genere :

#include <string.h>
#include <stdio.h>
#include <conio.h>

typedef char * String;

int main(){
String str="primaparte, seconda parte";
String Sep = ",";
String Token = NULL;
Token = strtok(str,Sep);
printf("%s",Token);
Token = strtok(NULL,Sep);
printf("%s",Token);
return 1;
}


io mi spettavo che mi scrivesse "primaparte" "seconda parte", invece la seconda parte si tronca allo spazio , infatti mi esce : "primaparte" "seconda".

perch?? come posso rimediare ??

Andrea Simonassi
25-03-2004, 22:56
La libreria standard del C lascia un po' a desiderare, quella del C++ abbastanza completa, anche se non come quella di Java.

Purtroppo la sintassi complicata, se non hai letto un buon libro sul C++ difficilmente potrai capire del tutto questo codice.

Esempio C++



#include <iostream>
#include <vector>
#include <string>

using namespace std;
typedef vector<string> svec;

svec split(string& subject, string& separator)
{
svec temp;
string::size_type start=0, end = 0;

while (start != string.npos)
{
end = subject.find(separator, start);
temp.push_back(subject.substr(start, end != string.npos ? end - start: string.npos));
start = end != string.npos ? end + separator.length() : string.npos ;
}
return temp;
}


int main()
{
string str("primaparte, -seconda parte, -terza parte, -quarta ed ultima parte");
string sep = ", -";
svec tokens = split(str, sep);
cout << tokens[0] << endl;
cout << tokens[1] << endl;
cout << tokens[2] << endl;
cout << tokens[3] << endl;
return 0;
}

Loading