convertir getline() chaîne de nombres d'un tableau ou de l'ints

J'ai un fichier texte écrit comme:

1 2 3 
7 8 9 
13 14 15 

L'objectif est de faire de chaque colonne d'un tableau d'entiers, tels que x=[1,7,13] , y=[2,8,14], z=[3,9,15].

Voici ce que j'ai jusqu'à présent...

J'ouvre le fichier texte et de le lire dans le contenu comme une chaîne de caractères:

string fileText;
int n;
int result[];
    //file open
        ifstream input ("input.txt");

    //file read
        if(input.is_open())
        {

            for(int i=0; i<n; i++) //n=3 in this case
            {
                 getline(input, fileText);
                 result = strtok(fileText," "); //parse each line by blank space " ".
                  //i get various errors here depending on what I try: such as "must be lvalue" 
                  //or a problem converting string to char.

                 x[i] = result[0];
                 y[i] = result[1];
                 z[i] = result[2];
            }

 }

Donc mon problème est la conversion d'une ligne de texte en nombres séparés par un espace dans un tableau d'entiers.

C'est assez simple, dans un langage de haut niveau comme PHP, mais en C++, cela devient plus compliqué avec les types de données et les mem allocation, etc.. En Plus je suis un novice!

Grâce

~

Comment pourrais-je le faire sans le vecteur?

Si dire que j'ai eu:
int x*, y*, z*;

alors allouer de la mémoire pour chaque variable pointeur:

    x = (int*) malloc (n*sizeof(int)); //where n is the number of lines in the text doc.
    y = (int*) malloc (n*sizeof(int));
    z = (int*) malloc (n*sizeof(int));

Maintenant, je veux mettre chaque colonne, dans chaque x,y,z tableau d'entiers.

Puis-je faire quelque chose comme:

...

std::string line;
int i;
for (int k=0; k<n; k++) 
{
        while (std::getline (input, line))
        {
        std::stringstream parse(line);

        parse >> i;
        x[k] = i;
        parse >> i;
        y[k] = i;
        parse >> i;
        z[k] = i;

        }


    }

maintenant x = [1,7,13] et ainsi de suite.

Est-il un moyen de le faire sans l'aide de la push_back() la méthode?
Je veux juste lire dans les entiers dans chaque groupe.

utilisation getNextInt() ou quelque chose?

  • Êtes-vous familier avec, par exemple,input >> x[i];?
  • Vous ne voulez pas mélanger les chaînes C++ ( getline ) avec C-style cordes (strtok). Choisissez l'un ou de l'autre et de s'y tenir.
  • Voici un bon tutoriel sur le C++ IO: cplusplus.com/doc/tutorial/basic_io
  • En fait, cela a fonctionné, après la correction de certains problèmes de pointeur.
InformationsquelleAutor zmny | 2012-09-06