Advertisement
Guest User

C++ Javascript Html

a guest
May 29th, 2019
247
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Intento tomar el imput del usuario por consola C++,
  2. crear un documento.html con javascript,
  3. aplicarle la siguiente funcion javascript al imput del usuario
  4. var cifrado = encodeURIComponent("imputDelUsuario");
  5. escribir el resultado de la funcion javascript en el codigo fuente del documento.html usando
  6. la funcion javascript document.write(cifrado);
  7. obtener todo el codigo fuente del documento.html dentro de la variable string cifrar en c++
  8. y usar find para buscar en el string que contiene el codigo fuente el resultado de la funcion
  9. en javascript. Esto ultimo aun sin implementar. */
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. /*Problemas que tengo:
  17. 1 - document.write(cifrado) no me escribe el resultado de la funcion
  18. encodeURIComponent("imputDelUsuario");
  19. No entiendo por que.
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. 2 - Quiero hacer el codigo portable y no conozco ninguna alternativa multiplataforma
  27. a system ("start Documento.html"); para abrir el navegador por defecto con el documento.
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. 3 - Esto forma parte de un proyecto bastante mas grande de librerias que utilizo entre
  35. otras cosas para obtener geolocalizacion a traves del navegador y guardarlo en C++. Por
  36. lo que alternativas en C++ que subtituyan la funcion encodeURIComponent() no son viables.
  37. Tambien intento hacer la libreria para que me permita tener acceso a elementos de escritorio
  38. desde javascript, como rutas de ficheros, etc.
  39.  
  40.  
  41.  
  42.  
  43.  
  44. 4 - Esta funcion que no incluyo en este codigo tambien me esta dando problemas:
  45. void abrir_nueva_pestanhaHTML(string url, string mensaje)
  46. {
  47. string nuevapestanha1 = "<a target=\"_blank\" href=\"";
  48. string nuevapestanha2 = "\">";
  49. string nuevapestanha3 = "</a>";
  50. ContenidoH = ContenidoH + nuevapestanha1 + url + nuevapestanha2 + mensaje + nuevapestanha3;
  51. }
  52.  
  53. Resulta que en la url del navegador se me anhade toda la direccion del archivo documento.html
  54. en plan:
  55. c:\\Carpeta\Carpeta2\documento.html\www.google.com en lugar de: www.google.com
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. 5 - Con esta funcion tambien tengo problemas. Hago la llamada asi:
  63. formateo_textoJS("blue", "18", "Courier, monospace");
  64.  
  65.  
  66. La funcion es:
  67. void formateo_textoJS(string colorFondo, string tamanhoFuente, string fuenteFamilia)
  68. {
  69. string fondo1 = "document.body.style.backgorundColor =";
  70. string fondo2 = "\";";
  71. ContenidoJ = ContenidoJ + startScript + fondo1 + colorFondo + fondo2 + finScript;
  72.  
  73. salto_lineaJS();
  74.  
  75. string tamanho1 = "document.body.style.fontSize =";
  76. string tamanho2 = "px\";";
  77. ContenidoJ = ContenidoJ + startScript + tamanho1 + tamanhoFuente + tamanho2 + finScript;
  78.  
  79. salto_lineaJS();
  80.  
  81. string fuente1 = "document.body.style.fontFamily =";
  82. string fuente2 = "\";";
  83.  
  84. ContenidoJ = ContenidoJ + startScript + fuente1 + fuenteFamilia + fuente2 + finScript;
  85. }
  86.  
  87. En el codigo fuente de documento.html todo es correcto, pero no sucede nada.
  88. */
  89.  
  90.  
  91. #include <iostream> //Imput y ouput C++
  92. #include <string>   //Contenedor std::string
  93. #include <fstream> //Manejo de ficheros
  94. #include <windows.h> //La uso para system start y asi abrir el navegador por defecto.
  95.  
  96.  
  97. using namespace std; //Usar el std por defecto.
  98.  
  99. string ContenidoH; //Aqui se almacena el html
  100. string ContenidoJ; //Aqui se almacena el javascript
  101.  
  102. string finScript = "</script>"; //Etiqueta cerrar el script
  103. string startScript = "<script>"; //Etiqueta abrir el script
  104.  
  105. string nombreDelDocumento = "Documento.html"; //Nombre y extension para el archivo a crear.
  106.  
  107. static int contadorH = 0;  /*Veces que se ejecuta la funcion, lo utilizo para que la
  108. //primera vez que se abra el archivo Documento.html se borre su contenido, pero se
  109. //conserve las siguientes veces. */
  110. string etiquetasHTML; //Aqui guardo las etiquetas basicas + el contenido del usuario.
  111. string etiquetasJAVASCRIPT;//Aqui guardo las etiquetas basicas + el contenido del usuario.
  112. string etiquetasHTMLJAVASCRIPT;//Aqui guardo las etiquetas basicas + el contenido del usuario.
  113.  
  114. //Funcion para crear el documento con las etiquetas. Esta hecha para poder utilizarla con
  115. //imput del usuario, pero la cambie para el cifrado. Por eso se veran cosas mal implementadas,
  116. //y que a priori no hacen nada, o no funcionan. Aun no la revisare hasta finalizar el programa.
  117. void FuncionCrearHTML(bool HTML, bool JAVASCRIPT, string ContenidoH, string ContenidoJ);
  118.  
  119. string cifrar; //Almacena el texto a cifrar.
  120.  
  121. int main()
  122. {
  123. cout << "Introduce el texto a cifrar:" << endl; //Saca texto y pide entrada.
  124. getline(cin, cifrar); //Obtiene entrada y guarda en variable.
  125.  
  126. string encodeURI1 = "var cifrado = encodeURIComponent(\""; //Javascript para cifrar URI.
  127. string encodeURI2 = "\");"; //Final del javascript para cifrar URI.
  128. ContenidoJ = startScript + encodeURI1 + cifrar + encodeURI2 + finScript;//Cadena con la funcion completa.
  129.  
  130. string cifradoEnJS = "document.write(cifrado);"; /*Intento que el resultado de la funcion de cifrado
  131. se escriba en el codigo fuente del documento.html, pero no funciona, solo escribe la funcion.*/
  132. ContenidoJ = ContenidoJ + "<br>" + startScript + cifradoEnJS + finScript;//Monto la cadena.
  133.  
  134.  
  135. FuncionCrearHTML(true, true, ContenidoH, ContenidoJ); //Llamo a la funcion.
  136. system ("start Documento.html"); //Llamada al sistema para que abra el documento con el navegador predetermiando.
  137.  
  138.         int i=0; //iterador.
  139.         ifstream ReadFile(nombreDelDocumento); //Obtiene el documento en ReadFile
  140.             while (!ReadFile.eof()) //Mientras que no se alcance el final del archivo...
  141.             {
  142.             ++i; //aumenta iterador y
  143.             ReadFile >> cifrar; //almacena el contenido del documento en la variable
  144.             cout << "cifrar" << i <<" = " << cifrar << endl; //Imprime el codigo fuente del documento.
  145.             }
  146.         ReadFile.close(); //Cierra el documento.
  147.         cout << cifrar; //Muestra todo el contenido de la variable.
  148.  
  149.         int pause; //Pausa
  150.         cin >> pause; //Pausa
  151.  
  152. return 0; //Retorna 0 a main.
  153. }
  154.  
  155.  
  156.  
  157. //Funcion:
  158. void FuncionCrearHTML(bool HTML, bool JAVASCRIPT, string ContenidoH, string ContenidoJ)
  159. {
  160.  
  161.     if (HTML && !JAVASCRIPT) //Si el primer argumento de la funcion es true y el segundo false:
  162.     {
  163.  
  164.         if(contadorH == 0)//Si no se ejecuto la funcion nunca:
  165.         {
  166.         etiquetasHTML = "<html>\n<body>\n" + ContenidoH + "\n</body>\n</html>";//Mete el imput entre etiquetas
  167.         cin.ignore(); //Limpiar Buffer para evitar errores.
  168.         ofstream WriteFile(nombreDelDocumento);//Obtiene el documento en WriteFile
  169.         WriteFile << etiquetasHTML; //Escribimos en el documento.html
  170.         WriteFile.close(); //Cierro docuemnto.
  171.         cout << "Se creo correctamente tu documento con HTML"<<endl;//muestro texto
  172.         ++contadorH;/*Aumento static contadorH para que no se vuelva a ejecutar el cuerpo de este if.
  173.         ya que se borra el contenido de documento.html abriendo de esta forma el documento.
  174.         Asi borro el contenido en el caso de que exista el documento para poder trabajar con el sin
  175.         conservar datos de otras ejecuciones. */
  176.         }//Cierro if contadorH == 0
  177.  
  178.         else //Si ya se ejecuto esta funcion anteriormente:
  179.         {
  180.         string etiquetasHTML = "<html>\n<body>\n" + ContenidoH + "\n</body>\n</html>";//Mete el imput entre etiquetas
  181.         cin.ignore(); //Limpiar Buffer para evitar errores.
  182.         fstream miDocumento; //Creo miDocumento del tipo fstream.
  183.         miDocumento.open(nombreDelDocumento, ofstream::app);//Abro el archivo sin borrar su contenido.
  184.         miDocumento << etiquetasHTML;//Meto el imput dentro de etiquetas en el documento
  185.         miDocumento.close(); //Cierro documento.
  186.         ++contadorH; //Esto creo que sobra porque ya no se va ejecutar nunca el if, si ya se ejecuto else.
  187.         cout << "Se creo correctamente tu documento con HTML"<<endl;//muestro texto.
  188.         }//Cierro else de if contadorH == 0
  189.     }//Cierro if HTML && !JAVASCRIPT
  190.  
  191.     if (!HTML && JAVASCRIPT) //si el primer argumento es false y el segundo true.
  192.     {
  193.         if (contadorH == 0)
  194.         {
  195.         etiquetasHTMLJAVASCRIPT = "<html>\n<body>\n" + ContenidoJ + "\n</body>\n</html>";/*Faltan etiquetas
  196.         javascript que ya van incluidas en ContenidoJ, Para automatizar la funcion, cambiar esto.*/  
  197.         cin.ignore(); //Limpiar Buffer para evitar errores.
  198.         ofstream WriteFile(nombreDelDocumento);//Lo mismo que dentro del primer if de la funcion.
  199.         WriteFile << etiquetasJAVASCRIPT;
  200.         WriteFile.close();
  201.         cout << "Se creo correctamente tu documento con JAVASCRIPT."<<endl;
  202.         ++contadorH;
  203.         }
  204.  
  205.         else
  206.         {
  207.         string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoJ + "\n</body>\n</html>";
  208.         cin.ignore(); //Limpiar Buffer para evitar errores.
  209.         fstream miDocumento;
  210.         miDocumento.open(nombreDelDocumento, ofstream::app);
  211.         miDocumento << etiquetasJAVASCRIPT;
  212.         miDocumento.close();
  213.         ++contadorH;
  214.         }
  215.     }
  216.  
  217.     if (HTML && JAVASCRIPT)
  218.     {
  219.         if (contadorH == 0)
  220.         {
  221.         string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoH + ContenidoJ + "\n</body>\n</html>";
  222.         cin.ignore(); //Limpiar Buffer para evitar errores.
  223.         ofstream WriteFile(nombreDelDocumento);
  224.         WriteFile << etiquetasJAVASCRIPT;
  225.         WriteFile.close();
  226.         cout << "Se creo correctamente tu documento con HTML y JAVASCRIPT."<<endl;
  227.         ++contadorH;
  228.         }
  229.  
  230.         else
  231.         {
  232.         string etiquetasJAVASCRIPT = "<html>\n<body>\n" + ContenidoH + ContenidoJ + "\n</body>\n</html>";
  233.         cin.ignore(); //Limpiar Buffer para evitar errores.
  234.         fstream miDocumento;
  235.         miDocumento.open(nombreDelDocumento, ofstream::app);
  236.         miDocumento << etiquetasJAVASCRIPT;
  237.         miDocumento.close();
  238.         cout << "Se creo correctamente tu documento con HTML y JAVASCRIPT."<<endl;
  239.         ++contadorH;
  240.         }
  241.     }
  242. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement