10-17-2004, 08:24 PM | #1 (permalink) |
Swashbuckling
Location: Iowa...sometimes
|
C++ Basic string help
I'm programming in C++ and want to read a list of names from an input file and store it as a string vector. Would this code work?
Is there a better way that’s not too advanced? ----------------------------------------------------------------------- ifstream fin; fin.open("names.txt"); vector<string> NAME; string person; while( !fin.fail( ) ){ fin >> person; NAME.push_back(person) } fin.close; ------------------------------------------------------------------- Thanks for any advice!
__________________
Watch More TV |
10-18-2004, 09:16 AM | #2 (permalink) |
Upright
Location: Milwaukee
|
Careful, do the names contain white space? When using the extraction operator (>>) it will read everything until the next chunk of whitespace. So if your file looks like:
John Doe Mary Smith Your vector will contain 4 elements: vec[0] == "John" vec[1] == "Doe" vec[2] == "Mary" vec[3] == "Smith" if you want the newline to represent your delimeter you'll have to use the std::getline function to read a line of text at a time. Example: std::ifstream fin("input.txt"); std::string person; std::vector<std::string> names; while (std::getline(fin, person)) { names.push_back(person); } |
10-18-2004, 10:16 AM | #3 (permalink) | |
Crazy
Location: California
|
Quote:
Bingle |
|
10-19-2004, 11:22 AM | #4 (permalink) |
Upright
Location: Milwaukee
|
The getline routine is faster than two extractions and a concatination plus the resulting code is cleaner, easier to understand, easier to modify and more robust. More robust because the text file could now easily contain Mr. John P. Doe Jr. on a line and that would be read-in correctly without modifying the code.
|
10-20-2004, 05:00 PM | #5 (permalink) | |
Crazy
Location: California
|
Quote:
Bingle |
|
Tags |
basic, string |
|
|