【问题标题】:printing lines from files从文件中打印行
【发布时间】:2012-11-10 19:54:37
【问题描述】:

我正在尝试打印每个文件的第一行,但我认为它输出的是地址。

#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

void FirstLineFromFile(ifstream files[], size_t count)
{
    const int BUFSIZE = 511;        
    char buf[BUFSIZE];

    ifstream *end, *start;

    for (start = files, end = files + count; start < end; start++)
    {
        cout << start->getline(buf, sizeof(buf)) << '\n';   
    }   
}

【问题讨论】:

    标签: fstream getline


    【解决方案1】:

    流不应按值传递。此代码按值传递一个流数组。您可以尝试传递一个向量并对其进行交互。

    void FirstLineFromFile(vector<ifstream*> files) {
        for (int i=0; i<files.size(); ++i) {
            string s;
            getline(*files[i], s);
            cout << s << endl;
        }
    }
    

    【讨论】:

    • for (start = files, end = files + count; start
    【解决方案2】:

    ifstream->getline 不返回字符串作为其返回值。您需要在单独的行中打印出已填充的缓冲区。

    for (start = files, end = files + count; start < end; start++)
    {
        start->getline(buf, sizeof(buf));
        cout << buf << '\n';   
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2015-03-06
      相关资源
      最近更新 更多