Solved

Question about vectors with reading a file

Posted on 2004-10-17
10
201 Views
Last Modified: 2010-04-01
Hello everyone how are you doing? I am sorry to bother you all, however I have been at this for awhile now and I am not sure what to do. I am reading a file and counting the records and puting them into a vector. However the file in the data looks like this:
some text
398339
some text
3903993
What I need to do is count the records which is easy but I want to display the vector but only the text not the numbers. I have tried like arrays do A1[i].text A1[i].number. But it doesn't seem to work that way how do vectors work to do that or do they not work like that. Thanks.


0
Comment
Question by:Corey_819
  • 6
  • 2
  • 2
10 Comments
 
LVL 30

Expert Comment

by:Axter
ID: 12336076
What type is your vector holding?

If your type has a text member and a number member, then it can do that.

Please post some code so we can further assist you.
0
 
LVL 30

Expert Comment

by:Axter
ID: 12336081
>>But it doesn't seem to work that way how do vectors work to do that or do they not work like that. Thanks.

Also, please give more details as to how it does not work.
Does it fail to compile?
Does it fail to link?
Does it crash?
Does it run, but fails to display properly, and if so, more details.
0
 
LVL 1

Author Comment

by:Corey_819
ID: 12338350
I am doing this bear with me on the syntax I don't have the exact code with me it is at home and I am at work. But all this code is doing as you probably can see is loading the entire some text 934873 some text 939339. Thanks for your help greatly appreciated. :)

vector<string> v1;
string line;
infile("file.dat")

while(getline(infile, line, '\n')
{

v1.push.back(line);

}
0
ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

 
LVL 1

Author Comment

by:Corey_819
ID: 12343331
No I don't get any errors I just don't know how to load up the array distiguishing the text and the numbers. Thanks
0
 
LVL 1

Author Comment

by:Corey_819
ID: 12343480
I meant vector not array
0
 
LVL 9

Expert Comment

by:jhshukla
ID: 12344836
the way you are currently doing reads lines from files. it will treat a string of digits as a string of chars and not as numbers. the numbers that you read in are stored as strings of chars in line. if you want to read them in to numbers instead, you can define a struct that holds a string and a number and make a vector out of that type.

or you could skip the elements that hold numbers. use v1[2*i]
0
 
LVL 1

Author Comment

by:Corey_819
ID: 12346554
jhshukla thanks for the help. I was wondering could you give me an example on how to do that with vectors. I haven't used vectors that much so I am still learning. Thanks. :)
0
 
LVL 1

Author Comment

by:Corey_819
ID: 12350259
struct Data{

    string city_name;
      double pop;
};


vector<Data> vec1;
      ifstream infile ("cities.dat");
    infile >> Data
    getline(infile, Data);

Something like this jhshukla
0
 
LVL 9

Accepted Solution

by:
jhshukla earned 125 total points
ID: 12378096
read all the lines as you are doing it now. then,
for(int i=0; i<v1.size(); i++){
  if( i%2 == 0 ) //if i is an even number
    cout << v1[i] << endl;
}

OR

for(int i=0; i < v1.size()/2; i++){
  cout << v1[i*2] << endl;
}

=======================
OR
=======================

struct Data{
    string city_name;
     double pop;
};

...
  vector<Data> vec1;
     ifstream infile ("cities.dat");
  loop{
    getline(infile, vec1[i].city_name);
    infile >> vec1[i].pop;
  }

  loop{
     cout << vec1[i].city_name
  }
...

hope that helps
jay
0
 
LVL 1

Author Comment

by:Corey_819
ID: 12380057
Thank you that is exactly what I was lookking for. :)
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

822 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question