getivan icon

Space Remover - UTF-16 LE BOM (Unicode)

getivan | PRO | 09/17/21 08:43:34 PM UTC | 0 ⭐ | 1939 👁️ | Never ⏰ | []
C++ |

1.33 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <cassert>
#include <codecvt>
#include <fstream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main() {
    //The input file:
    //you just need to change it's value to access different files 
    string inputFileName = R"(permutations-contact-keyword-export.txt)";
 
    //The output file:
    //No need to change anything here 
    string outFileName = "updated-" + inputFileName;
 
    //Delete the old file with the same name
    remove(outFileName.c_str());
    //Open the file that we need to modify
    wifstream inFile(inputFileName);
    std::locale inLoc(std::locale(inFile.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
    inFile.imbue(inLoc);
 
    //Open the output file
    wofstream outFile;
    std::locale outLoc(std::locale(std::cout.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
    outFile.imbue(outLoc);
    outFile.open(outFileName, std::ios::binary);
 
    //Copy from input file to output file, removing spaces
    std::remove_copy_if(std::istreambuf_iterator<wchar_t>(inFile), std::istreambuf_iterator<wchar_t>(), std::ostreambuf_iterator<wchar_t>(outFile), [](wchar_t c) { return c == L' '; });
 
    //Close input file
    inFile.close();
 
    //Close the output file
    outFile.close();
}
 

Comments