2012-03-29 7 views
-1

Ich möchte meine Frage ändern.C++ substr und find_first_of

lassen Sie mich bitte wissen, was passiert;

type is "CHAR(10)" 

size = type.substr(type.find_first_of("("), type.find_first_of(")")); 
cout << "SIZE : " << size << endl; 
cout << "SIZE : " << size.substr(1, (size.length())-1) << endl; 

SIZE : (10) 
SIZE : 10) 

Ich brauche nur 10. Ich kann das nicht tun.

+1

was meinst du indem Sie nicht gut funktionieren..zeigen Sie uns Ihren Code und welche Probleme Sie damit haben. – Naveen

+0

Was ist Ihr Wunschergebnis? –

+0

funktioniert nicht gut? wie funktioniert es ok, aber nicht großartig? – Anycorn

Antwort

1

Funktion substr in std :: string hat zwei Argumente erstes Argument Index von Anfang ist und das zweite Argument ist die Länge der Teilzeichen müssen Sie

string type = "CHAR(10)"; 

int k1,k2; 
size = type.substr(k1=type.find_first_of("("), k2=type.find_first_of(")")); 
cout<<"index="<< k1<<" len=" << k2 << endl; 
cout << "SIZE : " << size << endl; 
cout << "SIZE : " << size.substr(1, (size.length())-1) << endl; 

index1=4 len=7 
SIZE : (10) 
SIZE : 10) 

dies ist einfach, dass die Größe finden String vom Typ aus Index 4 bis 10 und da die Größe des Typs 8, Code Druck bis zum letzten Zeichen der Zeichenfolge

Lösung ist:

k1= type.find_first_of("("); 
k2=type.find_first_of(")"); 
k2-=k1;//now it's the length of size 
size = type.substr(k1,k2); 
+0

danke, Ich habe diesen Stil gemacht int i, j = 0; \t \t \t \t i = type.find_first_of ("(") + 1; \t \t \t \t j = type.find_first_of (")") - i; – Karl