Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Noxware en 29 Noviembre 2014, 19:11 pm



Título: [AYUDA] Remplazar cadena en un string C++
Publicado por: Noxware en 29 Noviembre 2014, 19:11 pm
Hola a todos, no soy programador de C++ pero estoy haciendo un proyecto y necesito q sea liviano y rapido y por ello necesito q este hecho en C++

Necesito remplazar los 3 espacios iniciales de un string.... en ocntre un codigo que es el siguiente y que funciona para remplazar strings:

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7.    string str("one three two four");
  8.    string str2("three");
  9.    str.replace(str.find(str2),str2.length(),"five");
  10.    cout << str << endl;
  11.    return 0;
  12. }

Pero cuando lo utilizo en mi proyecto me da error:

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. int main() {
  8.  ifstream in("archivo.txt"); // Open for reading
  9.  ofstream out("j.txt"); // Open for writing
  10.  string s;
  11.  string re("   ");
  12.  while(getline(in, s)) // Discards newline char
  13.  
  14.    s.replace(s.find(re),re.length(),"");
  15.    out << s << "\n"; // ... must add it back
  16.  
  17.  system("pause>nul");
  18. }
  19.  
  20.  
(El programa copia un archivo llamado "archivo.txt" a otro llamado "j.txt" y tiene que quitar los 3 espacios q van a haber al inicio del string)....... pero da error......

Porque sucede esto????


Título: Re: [AYUDA] Remplazar cadena en un string C++
Publicado por: avesudra en 29 Noviembre 2014, 20:13 pm
Hola francoyo1998, esto no es Python, en C++ hay que poner llaves para declarar los ámbitos, no es identándolo. Con tu código solo reemplazarías un triple espacio por cada línea, prueba así:
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.    ifstream in("archivo.txt"); // Open for reading
  10.    ofstream out("j.txt");      // Open for writing
  11.    string s;
  12.  
  13.    //string re("   ");    no es necesario...
  14.  
  15.    size_t position;
  16.  
  17.    if(in)
  18.        while(getline(in, s)) // Discards newline char
  19.        {
  20.            // We find the first match
  21.            position = s.find("   ");
  22.            // We replace "   " until the method find dont find a new match.
  23.            while(position != string::npos)
  24.            {
  25.                // We replace the rest of the matches
  26.                s.replace(position, re.length(),"   ");
  27.                position = s.find(re);
  28.            }
  29.            out << s << "\n"; // ... must add it back
  30.        }
  31.    else
  32.        cout << "File couldn't be opened" << endl;
  33.  
  34.    //system("pause>nul");
  35.    cin.get();
  36. }

Lo del cin.get() es para que sea portable.

Saludos.


Título: Re: [AYUDA] Remplazar cadena en un string C++
Publicado por: Noxware en 1 Diciembre 2014, 21:19 pm
ajajajjaja se me olvido, no las vi xD

Muchas gracias

Ojala fuera Python :P


Título: Re: [AYUDA] Remplazar cadena en un string C++
Publicado por: Noxware en 1 Diciembre 2014, 21:23 pm
Algo aun no funciona, creo q dire de forma mas concreta lo q quiero.... si sabes un poco de batch sabes para q sirve el comando "net start" sin parametros.... el comando net start lista todos los servicios en ejecucion de la siguiente forma:

Citar
Se han iniciado estos servicios de Windows:

   Acceso a dispositivo de interfaz humana
   Administración de aplicaciones
   Administrador de cuentas de seguridad
   Administrador de identidad de redes de mismo nivel
   Administrador de sesión del Administrador de ventanas de escritorio
   Adobe Acrobat Update Service
   Adquisición de imágenes de Windows (WIA)
   Agrupación de red del mismo nivel
   Aislamiento de claves CNG
   AMD External Events Utility
   AMD FUEL Service
   Aplicación auxiliar de NetBIOS sobre TCP/IP
   Aplicación auxiliar IP
   Archivos sin conexión
   Asignador de extremos de RPC
   Audio de Windows
   Centro de seguridad
   Cliente de directiva de grupo
   Cliente de seguimiento de vínculos distribuidos
   Cliente DHCP
   Cliente DNS
   Cola de impresión
   Compilador de extremo de audio de Windows
   Conexiones de red
   Detección de hardware shell
   Detección SSDP
   Dispositivo host de UPnP
   Energía
   Epson Scanner Service
   EPSON V3 Service4(04)
   Escritor VSS de SQL Server
   Escucha de Grupo Hogar
   Estación de trabajo
   Examinador de equipos
   Experiencia con aplicaciones
   Firewall de Windows
   Host de proveedor de detección de función
   Host del servicio de diagnóstico
   Iniciador de procesos de servidor DCOM
   Instrumental de administración de Windows
   Llamada a procedimiento remoto (RPC)
   Motor de filtrado de base
   Plug and Play
   Programador de aplicaciones multimedia
   Programador de tareas
   Protocolo de resolución de nombres de mismo nivel
   Proveedor de Grupo Hogar
   Publicación de recurso de detección de función
   Reconocimiento de ubicación de red
   Registro de eventos de Windows
   Servicio de caché de fuentes de Windows
   Servicio de compatibilidad de programas
   Servicio de detección automática de proxy web WinHTTP
   Servicio de directivas de diagnóstico
   Servicio de lista de redes
   Servicio de notificación de eventos de sistema
   Servicio de perfil de usuario
   Servicio de transferencia inteligente en segundo plano (BITS)
   Servicio de uso compartido de red del Reproductor de Windows Media
   Servicio enumerador de dispositivos portátiles
   Servicio Interfaz de almacenamiento en red
   Servicios de cifrado
   Servidor
   Sistema de eventos COM+
   SQL Server (SQLEXPRESS)
   Superfetch
   Temas
   Windows Defender
   Windows Driver Foundation - User-mode Driver Framework
   Windows Search

Se ha completado el comando correctamente.

pero yo necesito q se borren esos 3 espacios q hay antes del nombre de cada servicio y redirecionarlo a un archivo..... eso es todo.... pero no soy programador de C++ asi q me cuesta hacerlo a tan bajo nivel :/


Título: Re: [AYUDA] Remplazar cadena en un string C++
Publicado por: Noxware en 1 Diciembre 2014, 22:04 pm
Ta gracias ya lo logre, habia una linea en tu codigo q me estaba esorbando para hacerlo, la remplaze y quedo todo funcionando, ya puedo seguir con mi proyecto, muchas gracias.