how to do a simple loop to store strings ??

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • news.hku.hk

    how to do a simple loop to store strings ??

    is there any way to make a loop to store strings??

    e.g. abc.txt contains 3 lines i.e.
    this is line 1.
    this is line 2.
    this is line 3.

    i want to create a loop that can make the three strings contains the
    corresponding lines,

    string line1; //contains "this is line1."
    string line2; // contains "this is line2."
    string line3; // contains "this is line3."
    int no_of_lines = 3;

    can a simple for loop do this ??
    thanks a lot


  • Karthik

    #2
    Re: how to do a simple loop to store strings ??

    Read "Dynamic memory allocation" in any standard C++ book.
    To be more specific , new - delete should do it for you.

    If you donno in advance the number of lines, STL(Standard Template
    Library) should prove useful - vector , list should do it for you.

    HTH

    news.hku.hk wrote:
    [color=blue]
    > is there any way to make a loop to store strings??
    >
    > e.g. abc.txt contains 3 lines i.e.
    > this is line 1.
    > this is line 2.
    > this is line 3.
    >
    > i want to create a loop that can make the three strings contains the
    > corresponding lines,
    >
    > string line1; //contains "this is line1."
    > string line2; // contains "this is line2."
    > string line3; // contains "this is line3."
    > int no_of_lines = 3;
    >
    > can a simple for loop do this ??
    > thanks a lot
    >
    >[/color]

    --
    Karthik

    ------

    Humans please 'removeme' for my email.

    Comment

    • Carl Muller

      #3
      Re: how to do a simple loop to store strings ??

      "news.hku.h k" <billychu@hkusu a.hku.hk> wrote in message news:<408b5af2$ 1@newsgate.hku. hk>...[color=blue]
      > is there any way to make a loop to store strings??
      >
      > e.g. abc.txt contains 3 lines i.e.
      > this is line 1.
      > this is line 2.
      > this is line 3.
      >
      > i want to create a loop that can make the three strings contains the
      > corresponding lines,
      >
      > string line1; //contains "this is line1."
      > string line2; // contains "this is line2."
      > string line3; // contains "this is line3."
      > int no_of_lines = 3;
      >
      > can a simple for loop do this ??
      > thanks a lot[/color]

      Individually named string variables might not be the easiest way of
      processing a file. The usual solution for that would be to have a
      vector of strings. If you want to use a for loop and named variables,
      you could use an array of pointers to the strings (now I wonder if you
      can have an array of references, and how you bind them!). But that is
      having the tail wagging the dog - it might be more usual to have an
      array of strings, and then have named references bound to the elements
      of the array.

      Comment

      • Jeff Schwab

        #4
        Re: how to do a simple loop to store strings ??

        news.hku.hk wrote:[color=blue]
        > is there any way to make a loop to store strings??
        >
        > e.g. abc.txt contains 3 lines i.e.
        > this is line 1.
        > this is line 2.
        > this is line 3.
        >
        > i want to create a loop that can make the three strings contains the
        > corresponding lines,
        >
        > string line1; //contains "this is line1."
        > string line2; // contains "this is line2."
        > string line3; // contains "this is line3."
        > int no_of_lines = 3;
        >
        > can a simple for loop do this ??[/color]

        Yes. Look up the std::getline function.

        Comment

        • Jon Bell

          #5
          Re: how to do a simple loop to store strings ??

          In article <408b5af2$1@new sgate.hku.hk>,
          news.hku.hk <billychu@hkusu a.hku.hk> wrote:[color=blue]
          >is there any way to make a loop to store strings??
          >
          >e.g. abc.txt contains 3 lines i.e.
          >this is line 1.
          >this is line 2.
          >this is line 3.
          >
          >i want to create a loop that can make the three strings contains the
          >correspondin g lines,
          >
          >string line1; //contains "this is line1."
          >string line2; // contains "this is line2."
          >string line3; // contains "this is line3."
          >int no_of_lines = 3;[/color]

          You can't do this with individually named string variables, but you can
          do it with a vector of strings:

          #include <iostream>
          #include <fstream>
          #include <string>

          using namespace std;

          int main ()
          {
          ifstream inputFile ("abc.txt");
          vector<string> linevec;

          string line;
          while (getline (inputFile, line))
          {
          linevec.push_ba ck (line);
          }

          for (int k = 0; k < linevec.size(); ++k)
          {
          cout << linevec[k] << endl;
          }

          return 0;
          }

          --
          Jon Bell <jtbellm4h@pres by.edu> Presbyterian College
          Dept. of Physics and Computer Science Clinton, South Carolina USA

          Comment

          • Jacek Dziedzic

            #6
            Re: how to do a simple loop to store strings ??


            news.hku.hk wrote:[color=blue]
            > is there any way to make a loop to store strings??
            >
            > e.g. abc.txt contains 3 lines i.e.
            > this is line 1.
            > this is line 2.
            > this is line 3.
            >
            > i want to create a loop that can make the three strings contains the
            > corresponding lines,
            >
            > string line1; //contains "this is line1."
            > string line2; // contains "this is line2."
            > string line3; // contains "this is line3."
            > int no_of_lines = 3;
            >
            > can a simple for loop do this ??[/color]

            Sure!

            #include <sstream>
            #include <string>
            using namespace std;

            string int_to_str(int i) {
            ostringstream o;
            o << i;
            return o.str();
            }

            int main() {
            const int no_of_lines=3;
            string lines[no_of_lines];
            for(unsigned int i=0;i<no_of_lin es;++i)
            lines[i]="this is line"+int_to_st r(i);
            }


            .... except that you now have lines[0],lines[1],lines[2]
            instead of line1, line2,line3.

            HTH,
            - J.

            PS. What you really need is a textbook.

            Comment

            • Jacek Dziedzic

              #7
              Re: how to do a simple loop to store strings ??

              Jacek Dziedzic wrote:
              [color=blue][color=green]
              >> e.g. abc.txt contains 3 lines i.e.[/color][/color]

              Oops, missed that line and never noticed you wanted
              these from a file, sorry.

              - J.

              Comment

              • John Harrison

                #8
                Re: how to do a simple loop to store strings ??


                "news.hku.h k" <billychu@hkusu a.hku.hk> wrote in message
                news:408b5af2$1 @newsgate.hku.h k...[color=blue]
                > is there any way to make a loop to store strings??
                >
                > e.g. abc.txt contains 3 lines i.e.
                > this is line 1.
                > this is line 2.
                > this is line 3.
                >
                > i want to create a loop that can make the three strings contains the
                > corresponding lines,
                >
                > string line1; //contains "this is line1."
                > string line2; // contains "this is line2."
                > string line3; // contains "this is line3."
                > int no_of_lines = 3;
                >
                > can a simple for loop do this ??
                > thanks a lot
                >[/color]

                You can't do it in a loop, but why would you want to? Like this

                getline(file, line1);
                getline(file, line2);
                getline(file, line3);

                john


                Comment

                Working...