Zliczanie liter i linii z wczytanego pliku

0

Witam,
Mam problem ze zliczaniem liter i linii z wczytanego pliku. Nie działają mi obie rzeczy na raz. Każda z osobna działa poprawnie. Mógłby mnie ktoś nakierować co robię źle?

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

class Class
{
public:
    void count()
    {
        ifstream file;
        int numOfChar = 0;
        char word;
        string x;
        int numOfLines = 0;
        file.open("test.txt");
        if(file.is_open())
        {
            while(file >> word)
            {
                if((word==',' || word =='.')||(word==':' || word=='-'))
                {
                    numOfChar--;
                }
                numOfChar++;
                //getline(file,x);
                //numOfLines++;
                
            }
            
            cout << "Characters: " << numOfChar << endl;
            cout << "Lines: " << numOfLines << endl;
        }
        file.close();
    }
};

int main()
{
    Class c;
    c.count();
    return 0;
}


3

file >> word

linia to string a nie char, masz tutaj niezły truncate

#include <iostream>
#include <map>
#include <unordered_map>
#include <tuple>
#include <set>
#include <sstream>
#include <vector>
#include <algorithm>
#include <thread>
#include <chrono>
#include <ctime>
#include <functional>
#include <bitset>

#include <boost/algorithm/string.hpp>


int main()
{
	std::stringstream s;
	s << R"(abc s
		 dsdsd 3)";

	std::string line;
	int counter = 0;
	while(std::getline(s, line)) {
		boost::trim(line);
		std::cout << "Line " << counter << " size: " << line.size() << std::endl;
		++counter;
	}

	return 0;
}

musisz użyć std::getline(stream, std::string);
sam operator>> będzie szukał whitespaces

https://wandbox.org/permlink/JeKPqOoaNwD5YDbo

0

Dzięki za szybką reakcję. Działa!

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