Метод сжатия C ++ для текстового файла - PullRequest
0 голосов
/ 08 ноября 2018

Мне нужно создать функцию, которая подсчитывает символы в строке в C ++, например, при чтении из текстового файла, который содержит: "Aaabbbbbggssj" вывод должен быть: "3a5b2g1j"

Я действительно не знаю, как это сделать, и любая помощь будет принята с благодарностью! Спасибо

Мой код выглядит следующим образом:

#include <iostream>

using namespace std;
#include "Character.h"
#include <fstream>
#include <string>
using namespace std;

int main(){
  int c;
  void count(char [], int []);
//opening text file
  string line = " ";
  fstream my_stream;
  my_stream.open("information.txt");
//loop to cout occurences of each character
  while (getline (my_stream,line))
  {
    cout << line << '\n';
    c += line.length();
    cout << c;

    int numOfChars = line.length();

    for (unsigned int i = 0; i < line.length(); i++){

  }
  my_stream.close();
  return 0;
}

1 Ответ

0 голосов
/ 08 ноября 2018

Просто посчитайте повторяющиеся символы и получите результат:

string compress(string const& str) {
    string result = "";
    int i = 0;
    while (str[i]) {
        int c = 1;
        while (str[i] == str[i + c]) ++c;
        result += std::to_string(c) + str[i];
        i += c;
    }
    return result;
}
...