Enviado em 25/05/2017 - 15:54h
Boa tarde a todos,
Estou trabalhando numa classe genérica que pode utilizar std::string, std::wstring e std::u32string, tudo ia bem até realizar leitura e gravação de arquivos com std::u32string.
Inicialmente tive problemas em escrever, detectei que o problema estava em utilizar std::endl, então substituí todos por "\n".
Depois veio o problema maior e que não consegui resolver: não consigo ler linhas com std::getline, segue abaixo o exemplo.
Estou trabalhando numa classe genérica que pode utilizar std::string, std::wstring e std::u32string, tudo ia bem até realizar leitura e gravação de arquivos com std::u32string.
Inicialmente tive problemas em escrever, detectei que o problema estava em utilizar std::endl, então substituí todos por "\n".
Depois veio o problema maior e que não consegui resolver: não consigo ler linhas com std::getline, segue abaixo o exemplo.
#include <iostream>Resultado execução:
#include <fstream>
int main()
{
try
{
setlocale(LC_ALL, "pt_BR.UTF-8");
// Saida
std::basic_ofstream <char32_t> ao;
ao.open("/tmp/arquivo_saida.txt");
ao << U"Teste 1\n";
ao << U"Teste 2\n";
ao.close();
// Entrada
std::basic_ifstream <char32_t> ai;
ai.open("/tmp/arquivo_saida.txt");
std::u32string s;
std::getline(ai, s);
ai.close();
}
catch ( std::exception &erro )
{
std::cout << erro.what() << std::endl;
}
return 0;
}
$ ./codigo.run
std::bad_cast