Trouver toutes les occurrences d'un caractère dans une chaîne

J'ai délimité par des virgules cordes j'ai besoin de tirer les valeurs de. Le problème est que ces chaînes ne seront jamais une taille fixe. J'ai donc décidé de faire une itération sur les groupes de virgules et de lire ce qui est entre les deux. Pour ce faire j'ai fait une fonction qui retourne chaque occurrence de la position dans un exemple de chaîne.

Est-ce une façon intelligente de le faire? Est-ce considéré comme un mauvais code?

#include <string>
#include <iostream>
#include <vector>
#include <Windows.h>

using namespace std;

vector<int> findLocation(string sample, char findIt);

int main()
{
    string test = "19,,112456.0,a,34656";
    char findIt = ',';

    vector<int> results = findLocation(test,findIt);
    return 0;
}

vector<int> findLocation(string sample, char findIt)
{
    vector<int> characterLocations;
    for(int i =0; i < sample.size(); i++)
        if(sample[i] == findIt)
            characterLocations.push_back(sample[i]);

    return characterLocations;
}
Pour moi c'est parfait. Bien qu'il y aura beaucoup de C++ codeurs en disant: "pourquoi inventer la roue" et "utiliser cette fonction, ne pas l'écrire vous-même". De toute façon, je ne m'inquiète pas, je ne sais pas à propos de vous. Cependant, il y a un petit problème avec votre code. i ne devrait pas atteindre sample.length(), vous devriez donc avoir i < sample.length() dans votre pour la condition de boucle
Ouais je viens de fixe. Aussi, il devait être .size() pas de longueur
Si vous allez diviser les cordes par la suite, vous voudrez peut-être jeter un coup d'oeil à question.
Vous venez de prouver le point de ne pas "réinventer la roue". Pourquoi prendre le risque d'introduire un bug dans votre système lorsqu'une solution est disponible qui a eu des bugs pressé de lui pendant des années.

OriginalL'auteur lodkkx | 2011-10-11