En esta ocasión estoy tratando de mostrar una cadena, letra a letra, de momento, el siguiente code me funciona correctamente:
Código
//For WIN systems, use the header windows.h //For NIX systems, use the header unistd.h #include <iostream.h> #include <string.h> #include <windows.h> using namespace std; int main() { string str1 = "This is only a test"; int count; int limit; limit = str1.length() - 1; for (count = 0; count <= limit; count++) { cout << str1.at(count); Sleep(50); } }
Ahora bien, tengo dos dudas:
1.- El compilador (Dev-C++) me muestra esta advertencia:
Citar
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
La cual me lleva a deducir que la cabecera que estoy utilizando (windows.h o unistd.h, dependiendo del sistema) puede no ser la más apropiada. ¿Alguien podría decirme si DevC++ incluye alguna con una función igual a Sleep()?
Si vale de forma universal, independientemente del OS, sería incluso mejor que las que uso actualmente, que son dependientes del OS.
2.- He intentado hacer que este pequeño programita reciba dos parámetros, un int (con el tiempo en milisegundos entre letra y letra), y la cadena a mostrar.
Tras unos intentos lo he dejado tal que así:
Código
#include <iostream.h> #include <string.h> #include <windows.h> using namespace std; int main(int interval=50, string str1) { // string str1 = "This is only a test"; int count; int limit; limit = str1.length() - 1; for (count = 0; count <= limit; count++) { cout << str1.at(count); Sleep(interval); } }
Pero no me funciona...
Extrañamente, si introduzco un cout para mostrarme los valores de los parámetros introducidos (interval y str1)...
Código
cout << interval; cout << str1;
Devuelve lo siguiente, dependiendo de la entrada:
interval:
1 : si no introduzco parámetro
2 : si introduzco parámetro (cualquiera)
str1:
1.4013e-045: si no introduzco parámetro
2.8026e-045: si introduzco parámetro (cualquiera)
Los cuales, evidentemente no son los valores que deberían de entrar.
¿En qué puedo estar fallando esta vez?
Un Saludo, y miauchísimas gracias por adelantado.