harbour-books/tools/StatisticsGenerator/detector.cpp
Slava Monich cd357843cb Squashed 'fbreader/fbreader/' content from commit 7abc80d
git-subtree-dir: fbreader/fbreader
git-subtree-split: 7abc80d12fab06b05ea1fe68a0e73ea5e9486463
2015-05-26 23:59:24 +03:00

48 lines
1.3 KiB
C++

#include <iostream>
#include <string>
#include <ZLibrary.h>
#include <ZLFile.h>
#include <ZLInputStream.h>
#include <ZLLanguageDetector.h>
void doIt(const std::string &inputFileName) {
const size_t BUFFER_SIZE = 50000;
char *buffer = new char[BUFFER_SIZE];
shared_ptr<ZLInputStream> stream = ZLFile(inputFileName).inputStream();
if (stream.isNull() || !stream->open()) {
std::cerr << "Couldn't open file " << inputFileName << "\n";
return;
}
size_t length = stream->read(buffer, BUFFER_SIZE);
std::string out = inputFileName;
std::cout << "It have been read " << length << " bytes from file " << out.substr(out.find_last_of("/")+1) << "\n";
stream->close();
shared_ptr<ZLLanguageDetector::LanguageInfo> resultLanguageInfoPtr;
resultLanguageInfoPtr = ZLLanguageDetector().findInfo(buffer, length);
if (!resultLanguageInfoPtr.isNull()) {
std::cout << "Language: " << resultLanguageInfoPtr->Language << "\n";
std::cout << "Encoding: " << resultLanguageInfoPtr->Encoding << "\n";
}
delete[] buffer;
}
int main(int argc, char **argv) {
if (argc == 1) {
std::cerr << "usage:\n " << argv[0] << " <file name> [<file name> ...]\n";
}
ZLibrary::init(argc, argv);
for (int i = 1; i < argc; ++i) {
std::cout << argv[i] << ":\n";
doIt(argv[i]);
}
ZLibrary::shutdown();
return 0;
}