そもそも型変換しなくてもいいように入力を受け取ったりした方がいい!!

int → char

int n = 5;
char c = '0' + n;

char → int

char c = '1';
int n = c - '0';

int → string

int n = 10000;
string s = to_string(n);

string → int (long)

string s = "100000";
int n = stoi(s);

long l = stol(s);

string → vector<char>

string s;
cin >> s;
vector<char> v(s.begin(), v.end());

string → queue<char>

string s;
cin >> s;
queue<char> que;
REP(i,s.size()) {
  que.push(s[i]);
}

浮動少数点数(double, float)が整数かどうか確かめる

double d;
// do something...
if (round(d) == d) {
	cout << "整数";
} else {
	cout << "非整数";
}

浮動少数点数(double, float)の比較

constexpr double e = numeric_limits<double>::epsilon();
double a, b;
// do something...
if(fabs(a-b) <= e) {
	cout << "equal";
} else {
	cout << "not equal";
}