Stringstreams & Parsing - University of Southern California
[Pages:28]1
CS 103 Unit 14 ? Stringstreams and Parsing
2
I/O Streams
? '>>' operator used to read data from an input stream
? Always stops at whitespace
? '> buf;
fp
File text T h e e n d . \n EOF
EOF BAD FAIL
buf T h e \0
000
inf >> buf;
fp
File text T h e e n d . \n EOF
buf e n d . \0
EOF BAD FAIL 000
inf >> buf;
fp
File text T h e e n d . \n EOF
buf e n d . \0
EOF BAD FAIL 101
5
Which Option Works?
#include #include using namespace std; int main() {
vector nums; ifstream ifile("data.txt"); int x; while( !ifile.fail() ){
ifile >> x; nums.push_back(x); } ... }
data.txt
7 8 EOF
nums
_ ___
#include #include using namespace std; int main() {
vector nums; ifstream ifile("data.txt"); int x; while( 1 ){
ifile >> x; if(ifile.fail()) break; nums.push_back(x); } ... }
Goal is to read all integers from the file into a vector.
Which of the 3 works?
6
A More Compact Way
#include #include using namespace std; int main() {
vector nums; ifstream ifile("data.txt"); int x; while( !ifile.fail() ){
ifile >> x; nums.push_back(x); } ... }
data.txt
7 8 EOF
nums
_ ___
#include #include using namespace std; int main() {
vector nums; ifstream ifile("data.txt"); int x; while( 1 ){
ifile >> x; if(ifile.fail()) break; nums.push_back(x); } ... }
int x; while( ifile >> x ){
nums.push_back(x); } ...
Calling >> on an input stream will essentially return a Boolean: ? true = success ? false = failure
7
Correct Pattern for File I/O or Streams
? Step 1: Try to read data (>> or getline) ? Step 2: Check if you failed ? Step 3: Only use the data read from step 1 if
you succeeded
? If you read and then use the data BEFORE checking for failure, you will likely get 1 extra (bogus) data value at the end
8
Recall How To Get Lines of Text
? Using the >> operator to get an input string of text (char * or char [] variable passed to cin) implicitly stops at the first whitespace
? How can we get a whole line of text (including spaces)
? cin.getline(char *buf, int bufsize); ? ifile.getline(char *buf, int bufsize); ? Reads max of bufsize-1 characters
(including newline)
? But getline() uses char* (C-Strings)... what if we want to use C++ strings???
input.txt
The fox jumped over the log.
The bear ate some honey.
The CS student solved a hard problem.
#include #include using namespace std; int main () {
char myline[100]; int i = 1; ifstream ifile ("input.txt");
if( ifile.fail() ){ // can't open? return 1;
} ifile.getline(myline, 100); while ( ! ifile.fail()) {
cout ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- ogscript reference guide ross video
- fastscript 1 9 scripting library fast report
- developing acrobat applications using javascript adobe inc
- arcgis api for javascript client side mapping and analytics esri
- specifying data ampl
- javascript the strings object tutorials point
- sugi 25 the sas substr function a beginner s tutorial
- 10 1 the common gateway interface 10 2 cgi linkage
- nosql injection owasp
- the basics declaring parameters and variables in ampl
Related searches
- southern california universities
- southern california writers conference 2020
- university of california essay prompts
- southern california writers conference
- southern california writers conference 2019
- southern california christian writers conference
- university of california supplemental essays
- southern california community colleges list
- university of california free tuition
- university of california campuses
- university of california online certificates
- address university of california irvine