Cita: y digamos no hay así como un limite infinito para el buffer?
Con los strings no! Pero 'string' no es realmente un tipo de dato si no que es una clase, al trabajar con clases tienes algunos métodos como:
string cadena = "Hola Mundo!":
int tamanio = cadena.size(); // te dice la cantidad de letras en la cadena
char c = "Hola Mundo!";
if ( c == cadena.c_str() ){ //comparar objeto tipo string con cadena C_string.
//son iguales
}
...Hay muuuchos otros métodos que te ayudan, así no tienes por que preocuparte por el tamaño.
Pero claro... solo si tienes permitido usar strings y tener en cuanta que algunas cosas no son iguales. Por ejemplo si una función espera un c_string, no le puedes pasar un string de C++. Pero puedes pasar objeto.c_str(), o buscar alguna otra forma de hacerlo.
http://www.cplusplus.com/reference/string/string/
Lea mas sobre strings de C/C++
suerte