Manipulação de strings, arquivos e struct

Nesse exercício resolvido é lida um texto de um arquivo e mostrado o texto ao contrário, utilizando uma struct para organizar os dados lidos do arquivo. Como são muitos conceitos necessários para o exercício completo, eu dividi a solução em várias etapas, com vídeos para cada etapa.

Sendo assim, a resolução está dividida em etapas com manipulação de strings, arquivos e struct em C++.

Inicialmente é realizada a leitura de uma string e mostrada a palavra lida ao contrário. Também é feita a leitura da string a partir de um arquivo de texto (vídeos relacionados como aquecimento para os conceitos). Por final é feito um algoritmo que armazena os dados lidos em uma estrutura de dados definida pelo usuário e que divide o nome completo em nome e sobrenome (último vídeo).

Aquecimento para os conceitos

Resultado final

Algoritmo

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct spessoa {
    string nome;
    string sobrenome;
};

int main()
{
    string nomeCompleto;
    string temp;
    ifstream arq("dados.txt");
    int i, numPessoa = 0;
    spessoa pessoa[2];
    if (arq.is_open()) {
       while ( getline(arq, nomeCompleto) ) {
          temp = "";
          for (i = 0; i < nomeCompleto.size(); i++) {
            if (nomeCompleto[i] != ' ') {
                temp = temp + nomeCompleto[i];
            } else {
                break;
            }
          }
          pessoa[numPessoa].nome = temp;
          temp = "";
          for (i = i+1; i < nomeCompleto.size(); i++) {
            temp = temp + nomeCompleto[i];
          }
          pessoa[numPessoa].sobrenome = temp;
          numPessoa++;
       }
    } else {
        cout << "Arquivo invalido!";
    }
    arq.close();

    for (i = 0; i < 2; i++) {
        cout << "Nome: " << pessoa[i].nome << endl;
        cout << "Sobrenome: " << pessoa[i].sobrenome << endl;
        cout << "========================" << endl;
    }

    return 0;
}

Vídeo

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.