首页 文章

在读取文件(ifstream)时,有没有办法指导它创建一个新行?

提问于
浏览
1

在读取文件(ifstream)时,有没有办法指导它创建一个新行?

例如,我希望这件事发生:

MYFILE >>阵列[1] >>阵列[2] >> ENDL;

显然,“endl”是不允许的 . 还有另一种方法吗?

编辑---感谢快速回复的家伙们!

从文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同操作(或直到我希望使用for循环)

使用字符串对我来说很重要,因为它会使我未来的程序更加灵活 .

5 回答

  • 2

    几个选项:

    你可以使用ignore .

    myfile >> array[1] >> array[2];
    myfile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    

    或者您可以将每一行读成字符串流

    std::string line;
    std::getline(myfile,line);
    std::stringstream  stream(line);
    
    stream >> array[1] >> array[2];
    

    请注意:数组索引从0开始 .

  • 4

    使用 std::getline 将一行读入内存流,然后从中获取两个字符串 .

    while (cin)
    {
      string line;
      getline(cin, line);
    
      stringstream stream;
      stream << line;
    
      stream >> array[1]>>array[2];
    }
    
  • 1

    阅读你的两个项目,然后拨打 myfile.ignore(8192, '\n')

  • 3

    我不知道这个问题意味着什么 . 这是一种将文件的所有行读入字符串向量的简单方法 . 如果您先执行此操作,可能更容易执行您想要执行的操作 .

    std::vector<std::string> lines;
    
    std::string line;
    while (std::getline(myFile, line))
        lines.push_back(line);
    

    现在你可以说 lines[4] 得到第五行,或 lines.size() 找出有多少行 .

  • 0

    这应该工作:

    stringstream stream;
    string sLine;
    int iLine;
    
    while (cin)
    {
      getline(cin, sLine);
    
      stream << sLine;
      stream >> data[iLine][0] >> data[iLine][1];
    }
    

    早期答案的定制版本 .

相关问题