2010-12-15 132 views
4

J'ai une chaîne et je veux obtenir, par exemple, la position du dernier (.) Dans la chaîne, ou quel que soit le char que je veux vérifier, mais jusqu'à maintenant Je viens d'obtenir une tête.C++ obtenir le dernier (n) char dans une chaîne

grâce

+7

Montrez-nous votre code jusqu'à présent. Qu'est-ce qui fonctionne, et pour quoi avez-vous besoin d'aide? – abelenky

+0

désolé, je suis en retard pour répondre à vos commentaires, mais j'ai eu quelques problèmes de conection pour toute une journée, merci à tous pour les réponses –

Répondre

8

Est-ce que vous avez besoin find_last_of?

size_type find_last_of(const basic_string& str, size_type pos = npos) const; 

Trouve le dernier caractère correspondant à l'un des caractères dans la séquence de caractères donné. La recherche se termine à pos, c'est-à-dire que seule la sous-chaîne [0, pos] est considérée dans la recherche. Si npos est passé comme pos, une chaîne entière sera recherchée.

+0

Ce n'est pas une réponse, c'est une conjecture. –

+10

On dirait que c'est une bonne idée. Je ne peux pas faire beaucoup plus que de deviner avec cette question. –

+0

bon lien, merci –

6

Si votre chaîne est un tableau de caractères:

#include <cstdio> 
#include <cstring> 

int main(int argc, char** argv) 
{ 
char buf[32] = "my.little.example.string"; 
char* lastDot = strrchr(buf, '.'); 
printf("Position of last dot in string: %i", lastDot - buf); 
return 0; 
} 

..ou un std :: string:

#include <cstdio> 
#include <string> 

int main(int argc, char** argv) 
{ 
std::string str = "my.little.example.string"; 
printf("Position of last dot in string: %i", str.find_last_of('.')); 
return 0; 
} 
+1

'' est non standard. Utilisez ''. Idem pour ''. –

+0

Merci, corrigé. – thbusch

5
string lastN(string input) 
{ 
    return input.substr(input.size() - n); 
} 
+0

D'où vient N? – karlphillip

+0

c'est inacceptable. input.size() peut être inférieur à n. – Pavel