Czytanie linii z pliku, str.length() pokazuje złą długość wczytanej linii

0

Mam taki plik:

%0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1 %0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2 %0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%3 %0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%4 %0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%5 %0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%6%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
KOT
PIES
PAPUGA

Chcę go przeczytać do wektora pomijając pierwsze 7 linii. Kolejne słowa czytam, wrzucam do wektora. Po czym chcę poznać długość takiego słowa, wyswietlić tyle gwiazdek, ile ma słowo, jednak dla słowa KOT pokazuje mi, że słowo to ma długość 7 i wyświetla 7 gwiazdek ... o tak:

KOT:7


Co jest źle?

#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <sstream>

void pominLinie(std::istream& we, int linie)
{
    std::string s;
    for (; linie; --linie)
        std::getline(we, s);
}

int main()
{
    std::vector<std::string> slowa;

    std::ifstream plik("2.dic");

    if(!plik)
    {
        std::cout << "Blad podczas otwarcia pliku \'" << "2.dic" << "\'\n";
        exit(-1);
    }
    else
    {
        std::string slowo = "";
        pominLinie(plik, 7);

        while (std::getline(plik, slowo))
        {
            std::stringstream tnij;
            tnij << slowo;
            slowo.clear();
            tnij >> slowo;
            slowa.push_back(slowo);
        }

        slowo = "";
    }

    /*for(unsigned int i=0; i<slowa.size(); i++)
    {
        std::cout << slowa[i] << " ";
    }

    std::cout << "\n";*/

    std::cout << slowa[0] << ":" << slowa[0].length() << "\n";

    std::string s = slowa[0], d = "";
    for (unsigned int i=0; i<s.length(); i++)
    {
        d += "*";
    };

    std::cout << d << "\n";
}

Dodam, że jak wpisze na sztywno slowo[0] = "KOT"; jest ok ...

0

Dobra, wpadłem na coś. To kodowanie pliku *.dic mi wszystko utrudnia. Jak w takim razie czytać taki plik?

0
    std::cout << "\"" << slowa[0] <<  "\": " << slowa[0].length() << "\n";
remove_if(slowa[0].begin(), slowa[0].end(), isspace); // http://stackoverflow.com/questions/83439/remove-spaces-from-stdstring-in-c
    std::cout << "\"" << slowa[0] <<  "\": " << slowa[0].length() << "\n";

1 użytkowników online, w tym zalogowanych: 0, gości: 1