Maneira portátil de determinar o separador de linha da plataforma

Diferentes plataformas usam diferentes esquemas de separação de linhas (LF, CR-LF, CR, NEL, SEPARADOR DE LINHAS Unicode, etc.). As bibliotecas de tempo de execução C ++ (e C) tornam muito transparente para a maioria dos programas, convertendo'\n' de e para a codificação de nova linha nativa da plataforma de destino. Mas se o seu programa precisa determinar a sequência de bytes real usada, como você pode fazer isso de maneira portável?

O melhor método que eu criei é:

Escreva um arquivo temporário no modo de texto com apenas'\n' nele, deixando o tempo de execução fazer a tradução.Leia novamente o arquivo temporário no modo binário para ver os bytes reais.

Isso parece desleixado. Existe uma maneira de fazer isso sem arquivos temporários? Tentei strings em vez disso, mas o tempo de execução não é realmente traduzido'\n' nesse contexto (o que faz sentido). O tempo de execução expõe essas informações de alguma outra maneira?

questionAnswers(1)

yourAnswerToTheQuestion