ler ficheiro c++

ser eu

Membro
tou com dificuldades em ler um ficheiro .txt em c++.

alimentos
maça(fruta),banana(fruta),couve(legume)
carros
a3(audi),astra(opel)

como faço (em c++) um progama para ler do ficheiro '.txt' todas as palavras do ficheiro pela ordem em que estão e passa-las para variaveis.:(

por exemplo:
alimentos -> isto lido do fich
maça
fruta
banana
fruta
couve
legume
carros
....

sei que tenho de fazer uma especie de split mas nao sei como fazer em c++

alguem me pode dizer como é o codigo, pff


cumps
 
Podes usar o istringstream para separar as palavras, se estiverem todas separadas por espaços. se precisares de numa palavra dividi-la em várias podes usar o find e o substr.

Por exemplo, se o ficheiro for
maça fruta
pera xpto


Para encontrar cada uma destas palavras basta mesmo usar o istringstream.

Se for:
maça(fruta)
pera(xpto)

Já tens que encontrar os "(" e ")", usando o find, e fazer substrings (usando o substr).

Estou a presumir que já sabes como abrir o ficheiro, claro.
 
Neste momento não tenho oportunidade de escrever código e testar, mas vou tentar dar uma ajuda:

Find: http://www.cplusplus.com/reference/string/string/find.html
substr: http://www.cplusplus.com/reference/string/string/substr.html

Se tu souberes a ordem das linhas, é muito simples.

Na primeira linha procuras o "(", fazendo algo tipo isto

Código:
size_t abre_parentises = linha.find("(");

a variavel aber_parentises fica com a posição onde a string("(") foi encontrada.

Depois, podes fazer uma substring desde o ínicio até ao "(", fazendo

Código:
string str = linha.substr(0, abre_parentises);

Isto faz-te uma substring desde o inicio até ao parentises.

Depois, para os outros fazes de forma semelhante. Podes agora retirar a parte da string que já processaste, por exemplo.

Código:
linha = linha.substr(abre_parentises+1, linha.size());
(atenção, não tenho a certeza se é linha.size() - 1, mas é uma questão de ires testando).

Depois voltas a fazer o find e assim sucessivamente. Espero ter ajudado.
 
Back
Topo