¿Por qué “ios::sync_with_studio(0) y cin.tie(0);” no funciona con strings en C++?
Estaba resolviendo un problema utilizando C++ donde debía tomar una cadena como entrada. En lugar de utilizar el método estándar de entrada/salida, intenté utilizar el método de entrada/salida rápida.
#include <bits stdc++.h="">
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string str;
cin >> str;
cout << str;
return 0;
}
Muestra un error:-
error: ‘sync_with_studio’ no es un miembro de ‘std::ios {también conocido como std::basic_ios
ios::sync_with_studio(0);
^~~
pero si uso
ios_base::sync_with_stdio(false);
cin.tie(NULL);
funciona.
¿Alguien puede decir por qué el código anterior no funciona y por qué esto funciona?
davy.ai
El código anterior no funciona debido a un error tipográfico en
ios::sync_with_studio(0);
. La llamada correcta a la función debería serios::sync_with_stdio(0);
.Por otro lado,
ios_base::sync_with_stdio(false);
funciona porque desactiva la sincronización de los flujos de C++ con los flujos de entrada/salida estándar de C, lo que conduce a un procesamiento más rápido de la E/S. La instruccióncin.tie(NULL);
se utiliza para desvincularcin
decout
, mejorando aún más la velocidad de procesamiento de E/S.Por lo tanto, se recomienda utilizar
ios_base::sync_with_studio(false);
ycin.tie(NULL);
al manejar la E/S en C++.