Escrevi esse programa simples em C++ para cálculos de valores binários, testei com string e ele também faz a conversão, o único detalhe é que ele escreve os valores invertidos, então não implementei a melhoria ainda
#include<iostream>
#include<conio.h>
using namespace std;
int main (){
int bin, n;
cout << "digite o numero para converter em binario:\n";
cin>>n;
if (n<=0){
cout<< "numero invalido \n";
}
else{
while(n>=1){
cout << n%2 << "";
n=n/2;
}
}
system("pause");
return EXIT_SUCCESS;
}