11
votes

Lire les données du fichier

J'ai le fichier .txt qui contient des données comme suit [12,25], [36,45] I.E Nombres sont placées entre crochets séparées par des virgules les unes des autres Je veux lire un tel fichier via le programme C ++

J'ai mentionné sur String Toolkit disponible, spécifiquement une installation de regex peut être utilisée mais je ne suis pas capable de mettre en place une personne peut m'aider s'il vous plaît ??


6 commentaires

Avez-vous écrit n'importe quel code jusqu'à présent?


Pourriez-vous rendre votre question un peu plus claire? C'est un peu déroutant en ce moment.


de fichier contiendra des nombres tels que [10,20], [15,35] ... Maintenant, comment puis-je obtenir 10 20 15 35 dans la matrice ... Je ne veux pas que la méthode normale comme le personnage de picture numérise jusqu'à la fin n tous Je connais une telle logique ce que je veux, c'est un code C ++ efficace en utilisant Strtk ... de préférence à l'aide de la fonctionnalité Regex dans Strtk


n'importe qui s'il vous plaît..stuck depuis la dernière heure


Vous n'avez pas besoin de regex pour faire cela, utilisez simplement l'opérateur de l'extracteur du flux.


strtok est techniquement c et non c ++


3 Réponses :


0
votes

Est-ce que je serais correct pour supposer que ceux-ci sont coordonnées, si oui, avez-vous pensé à écrire un parseur court pour eux? Vous pouvez donc lire une liste de sommets?

Alternativement, si vous souhaitez vraiment descendre le chemin de la regex, vous voudrez peut-être examiner le téléchargement du boost Bibliothèque, Boost.regex travaille un rêve :)


0 commentaires

1
votes

Il suffit d'utiliser scanf ou fscanf comme ceci: xxx

n'oublie pas que les fonctions CI / O sont valides C ++. < / p>


0 commentaires

-3
votes
#include <iostream>
#include <iterator>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool isSeparator(const char c){
    return c == '[' || c == ']' || c == ',';
}

int main(){
    const char filename[] = "data.txt";

    ifstream fin(filename);
    vector<int> v;
    string buff;
    while(getline(fin, buff)){
        replace_if(buff.begin(), buff.end(), isSeparator, ' ');
        istringstream sin(buff);
        for(int n;sin >> n;){
            v.push_back(n);
        }
    }
    copy(v.begin(), v.end(), ostream_iterator<int>(cout,"\n"));
    //for(int i=0;i<v.size();++i) cout << v[i] << endl;
}

0 commentaires