In realtà, puoi usare un compilatore c++ e includere cstdlib, il codice C, generalmente, compilerà e funzionerà comunque.
Quello a cui ti riferiscio sono gli stream, abbastanza comodi (in pratica l'operatore << cel C++ (verso std::cout) si comporta come il + delle stringhe in java per lo standard-output... in realtà fa tanto altro ma per l'IO di base è assimilabile.
Per la lettura c'è il duale:
std:: string s; int i;
std::cin >> s >> i;
La seconda opzione aspetta un primo valore da stdin di tipo stringa (un invio) e un secondo valore di tipo int
questo codice dovrebbe chiarire (prima eseguo le operazioni di IO in c++ poi con la cstdlib)
#include <cstdio> //stdio.h
#include <iostream>
#include <string>
using namespace std; //Serve per poter omettere il namespace std:: davanti a tutti gli elementi di libreria standard c++.... nei file .h è bene evitare e chiamare le funzioni sempre col nome completo, per chiarezza, se vuoi togliere using namespace, scommenta /*std::*/
int main()
{
/*std::*/string s;
int n;
/*std::*/cin >>s>>n; //mi aspetto due dati, una stringa e un intero
/*std::*/cout << s << " s; n "<<n<<";"<</*std::*/endl; //li stampo
char ch[10]; int j;
scanf("%s",ch); //leggo una stringa (per comodità di dimensione statica 10char) (e aspetto un invio)
scanf("%d", &j); //leggo un intero (e aspetto un invio)
printf("%s ch; %d j;", ch, j); stampo lo stesso messaggio di prima
return 0;
}