相关疑难解决方法(0)

C++可以重用fstream来打开和写入多个文件吗?

我需要打开10个文件才能按顺序写入.我可以有一个fstream来做这个吗?我是否需要在每个文件之间执行任何特殊操作(flush()除外)或者只调用open(file1, fstream::out | std::ofstream::app)每个文件并在写入所有10个文件的末尾关闭流.

c++

19
推荐指数
1
解决办法
3万
查看次数

C ++如何初始化std :: istream *尽管构造函数受到保护

我想使用带有流成员的类。

我的代码如下所示:

//! pushes a Source and InputFilters into a filtering_istream
class FilterChain {
public:
    //! create an empty FilterChain
    FilterChain(){
        init();
    }

private:
    //! the stream to connect Source and InputFilters together
    io::filtering_istream* m_filteringStream;
    //! stream to use by other classes
    std::istream* m_stream;

    void init(){
        std::streambuf* streamBuffer = m_filteringStream->rdbuf();
        m_stream->rdbuf(streamBuffer);
    }
};
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出std :: basic_istream构造函数受到保护:

/usr/include/c++/4.8.1/istream:在成员函数`void FilterChain :: init()'中:/usr/include/c++/4.8.1/istream:606:7:错误:`std :: basic_istream <_CharT,_Traits> :: basic_istream()[with _CharT = char; _Traits = std :: char_traits]'受保护

我也尝试了流引用,但这导致了相同的错误。任何想法如何解决这一问题?

编辑1:

顺便说一下,我用一个新的init()修复了它,就像这样:

void init(){
        std::streambuf* streamBuffer …
Run Code Online (Sandbox Code Playgroud)

c++ stream

3
推荐指数
1
解决办法
6658
查看次数

.eof()循环不起作用

我正在尝试从文件中读取数字并将它们放入数组中.现在,当我运行该程序时,它打印8个数字,然后该行结束并打印相同的8个数字.这是一个永无止境的循环.我究竟做错了什么?

#include <iostream>                                                             
#include <fstream>                                                              
using namespace std;                                                            

int main()                                                                      
{                                                                               
  int num;                                                                      
  ifstream infile;                                                              
  infile.open("euler8Nums.txt");                                                
    infile >> num;//must attempt to read info prior to an eof() test            
    while(!infile.eof()){                                                       
      cout << num << endl;                                                      
      infile >> num;                                                            
    }                                                                           
    infile.close();                                                             
    return 0;                                                                   
}  
Run Code Online (Sandbox Code Playgroud)

c++ loops while-loop

2
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×3

loops ×1

stream ×1

while-loop ×1