Pergunta

Só por curiosidade, como é que o acesso iostream o sistema de input-output

. (Eu tenho um mau hábito de constantemente reinventar a roda, e eu estou querendo saber se eu posso construir um sistema personalizado de entrada-saída para os gostos de iostream).

Foi útil?

Solução

Para um guia detalhado para iostreams, ver o livro padrão C ++ iostreams e localidades . Depois de ler isso eu suspeito que você vai se contentar em gerir com com o status quo - iostreams são, provavelmente, a parte mais complexa da biblioteca C ++ padrão

.

Outras dicas

Depende ...

De alguma forma, interage com o sistema IO nativa do sistema operacional. Pode internamente usar a biblioteca C, que usa chamadas de sistema para o kernel, ou pode usar chamadas de sistema diretamente. A implementação exata é altamente dependente da plataforma.

Muitas pessoas vão dizer não reinventar a roda, mas poderia ser uma boa experiência de aprendizagem. Se você estiver usando o Windows, olhar para as chamadas de API Win32 para manipulação de arquivos. Se você usa Linux, use a biblioteca POSIX / C, ou usar as chamadas de sistema (muito mais difícil, gostaria de sugerir indo com a biblioteca C).

Você certamente poderia reinventar a roda.

Há uma série de complicações adicionais para os operadores de fluxo para lidar com conjuntos de caracteres internacionais. Depois de ter olhei para ele razoavelmente profundamente eu realmente não ligo para isso muito. É muito complicado e destrói completamente qualquer possibilidade de facilmente usando herança. Ele funciona e está disponível embora. (Eu queria mudar o comportamento do armazenamento ele usa durante conversões)

Todos os fluxos de ir a um streambuf. Isso streambuf vai depender do tipo de fluxo. Um ofstream vai para um fstreambuf; cout vai para alguns streambuf não especificado. Se você quiser personalizar as coisas, cout permite que você obtenha esta streambuf e possivelmente substituí-lo.

Um padrão comum é o "streambuf filtragem", que é uma interface streambuf que transforma sua entrada antes de enviá-lo para outro streambuf. Isto pode ser combinado com cout: tirar o streambuf original, envoltório que, em um streambuf filtragem, e colocar isso de volta invólucro no cout. Você não precisa saber como as obras originais streambuf.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top