из файла конвертировать двоичные в десятичные - PullRequest
0 голосов
/ 17 марта 2020

Привет, ребята, у меня проблема. У меня есть программа, которая конвертирует двоичные числа в десятичные. Но я хотел бы преобразовать двоичные числа из файла. Например, в моем текстовом файле есть двоичные числа, подобные этому: 10000111001 10001000100 100010110 100001000 00010010011 И я хотел бы открыть этот текстовый файл в моей программе и преобразовать это число в десятичное. Я создал нечто подобное, но оно не сохраняет мои выходные данные

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

using namespace std;

int bin2dec(string binary)
{
    int decimal = strtol(binary.c_str(), NULL, 2);

    return decimal;
}

int main()
{
    string number;

    ifstream one("data.txt") //here are mine binary numbers
    ofstream two("second.txt") // i would like to save my converted numbers in this file
        while (!one.eof())
        {
            one >> number;
            number = bin2dec(number);
            two << number;

        }


    system("pause >nul");
    return 0;
}

1 Ответ

1 голос
/ 17 марта 2020

Вы можете использовать std::stoll для преобразования строк двоичных данных в целые числа. Основа c пример:

#include <iostream>
#include <fstream>
#include <string>

void convbin(std::istream& is, std::ostream& os) {
    std::string bin;
    while(is >> bin) {        // extract word from "is"
        // Try to convert bin to a long long using base 2 (binary).
        // There's no error handling here and it may throw exceptions if it fails.

        os << std::stoll(bin, 0, 2) << '\n';
    }
}

int main() {
    std::ifstream one("data.txt");
    std::ofstream two("second.txt");

    if(one && two) convbin(one, two);
    else           std::cerr << "Error opening a file or both\n";
}
...