J'ai une chaîne dans le format suivant: « R: 625.5m E: -32768m »Obtenir une sous-chaîne en C
Quelle est la façon la plus efficace de tirer le 625,5?
J'ai une chaîne dans le format suivant: « R: 625.5m E: -32768m »Obtenir une sous-chaîne en C
Quelle est la façon la plus efficace de tirer le 625,5?
Votre meilleur pari est d'utiliser sscanf pour lire des informations formatées à partir de la chaîne.
sscanf(mystr, "R: %f", &myFloat);
Et - tout comme avec les expressions régulières - maintenant vous avez deux problèmes. – zwol
@Zack: l'analyse était déjà le problème. Les expressions régulières constituent le problème en plus de ce problème d'analyse. – Randolpho
Ce que je voulais dire, c'est que * scanf est aussi un problème en plus du problème d'analyse d'origine. Voir mes réponses aux autres réponses. – zwol
sscanf
est un bon candidat pour analyser des chaînes simples avec un format fixe.
OP recherche la manière la plus efficace – Svisstack
@Svisstack: voir les commentaires. Il veut "rapide et sale", pas "trois millisecondes plus vite que' sscanf' ". 'sscanf' * est * la bonne réponse. – Randolpho
@Svisstack: mais n'a pas dit s'il se soucie plus de l'efficacité d'exécution ou de l'efficacité du programmeur, ni s'il a besoin du résultat comme une chaîne ou un nombre, ni combien la chaîne peut varier, s'il est d'accord pour modifier l'original string, etc. Sans savoir tout cela, 'sscanf' est à peu près aussi bon choix que tout et mieux que la plupart (certainement beaucoup plus raisonnable que tout ce qui implique de modifier l'entrée). –
Utilisez une expression régulière. Maintenant, vous avez deux problèmes. :) – Randolpho
Je le reprends ... quel est le moyen le plus rapide et le plus sale d'y parvenir? – FoppyOmega
Désolé, ma mauvaise blague. J'ai effectivement répondu à la question, aussi. Utilisez 'sscanf'. – Randolpho