在c ++中使用ifstream

kra*_*626 3 c++ file

我有以下代码从文件中读取

#include <queue>
#include <iostream>
#include <fstream>
#include <string>
main(int argc,char * argv[])
{
   ifstream myFile(argv[1]);
   queue<String> myQueue;
   if(myFile.is_open())
      {
         while(...
         ///my read here
      }
}
Run Code Online (Sandbox Code Playgroud)

我有这样的输入文件

1234 345
A 2 234
B 2 345
C 3 345
Run Code Online (Sandbox Code Playgroud)

我想在读取循环中做相同的操作

myQueue.push("1234");
myQueue.push("345");
myQueue.push("A");
myQueue.push("2");
myQueue.push("234");
myQueue.push("B");
...
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法呢?

谢谢!

F. *_* P. 6

string input;
myFile >> input;
myQueue.push(input);
Run Code Online (Sandbox Code Playgroud)

未经测试但我认为它有效.

顺便说一句,如果你想解析整个文件:

while(myFile>>input)
Run Code Online (Sandbox Code Playgroud)

感谢rubenvb提醒我

  • 你不应该检查`eof()`,而是直接检查提取:`while(myFile >> input)`这会捕获所有读错误.(它使用每个C++流支持的隐式转换为bool.)你可以用getline做同样的事情:`while geline(myFile,input))` (3认同)
  • `ifstream`在读取值之前消耗所有空格.要读取整行,您可以使用"getline(myFile,input)"之类的东西 (2认同)