Pergunta

Esta questão já tem uma resposta aqui:

O que é a melhor maneira de ler em um arquivo delimitado guia em C ++ e armazenar cada linha como um registro? Fui à procura de uma biblioteca de código aberto para ajudar com isso, mas não tiveram sucesso então parece que eu vou ter que escrever a minha própria.

Foi útil?

Solução

typedef vector<vector<string> > Rows;
Rows rows;
ifstream input("filename.csv");
char const row_delim = '\n';
char const field_delim = '\t';
for (string row; getline(input, row, row_delim); ) {
  rows.push_back(Rows::value_type());
  istringstream ss(row);
  for (string field; getline(ss, field, field_delim); ) {
    rows.back().push_back(field);
  }
}

Isto irá ajudar a começar. Ele não faz qualquer verificação de que cada linha tem o mesmo número de campos, permitem escapar field_delim, etc.

Outras dicas

Não há nenhum problema em usar iostreams -. Você pode ler cada linha com getline em corda, e então usar stringstream em que seqüência para repetir campos

Existem algumas bibliotecas listadas no artigo da Wikipédia CSV_application_support .

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