![]() |
stream problem
Hello,
I'm wondering why this outputs garbage: std::ofstream outFile("test.txt"); outFile << 1.0f << std::endl; outFile << filename << std::endl; outFile << 2.0f << std::endl; std::string s; float x; std::ifstream inFile("test.txt"); inFile >> x; std::cout << x << std::endl; std::getline(inFile, s, '\n'); std::cout << s << std::endl; inFile >> x; std::cout << x << std::endl; and why this works: outFile << filename << std::endl; outFile << 1.0f << std::endl; outFile << 2.0f << std::endl; std::string s; float x; std::ifstream inFile("test.txt"); std::getline(inFile, s, '\n'); std::cout << s << std::endl; inFile >> x; std::cout << x << std::endl; inFile >> x; std::cout << x << std::endl; I think the former doesn't work because the getline() is reading the same line as the previous inFile >> read. How can I get it to skip to the next line, if that is indeed the problem. |
Re: stream problem
"vsgdp" <nospam@nospam.com> wrote in message news:LMr2b.10463$Qy4.4180@fed1read05... > Hello, > > I'm wondering why this outputs garbage: > > std::ofstream outFile("test.txt"); > > outFile << 1.0f << std::endl; > outFile << filename << std::endl; > outFile << 2.0f << std::endl; > std::string s; > float x; > std::ifstream inFile("test.txt"); > inFile >> x; > std::cout << x << std::endl; > std::getline(inFile, s, '\n'); > std::cout << s << std::endl; > inFile >> x; > std::cout << x << std::endl; > > and why this works: > > outFile << filename << std::endl; > outFile << 1.0f << std::endl; > outFile << 2.0f << std::endl; > std::string s; > float x; > std::ifstream inFile("test.txt"); > std::getline(inFile, s, '\n'); > std::cout << s << std::endl; > inFile >> x; > std::cout << x << std::endl; > inFile >> x; > std::cout << x << std::endl; > > I think the former doesn't work because the getline() is reading the same > line as the previous inFile >> read. Not quite. getline is doing what it is supposed to which is reading up to the next newline. Your mistake is thinking that inFile >> x will read a newline, but it doesn't. inFile >> x reads a number and a newline is not part of a number. So when you have a number followed by a newline the newline is left behind unread. Then getline comes along and reads it. > How can I get it to skip to the next > line, if that is indeed the problem. > Use getline twice? john |
Re: stream problem
"John Harrison" <john_andronicus@hotmail.com> wrote in message news:bidnc9$87l3m$1@ID-196037.news.uni- > > How can I get it to skip to the next > > line, if that is indeed the problem. > > > > Use getline twice? > or ignore. |
| All times are GMT. The time now is 12:45 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.