Programación General > Visual C++
Varias Dudas
shephiroth:
Pues eso, tengo dos problemas y me gustaría a ver si me podeis ayudar.
El primero no es muy complicado, simplemente me gustaría saber como recorrer cada uno de los caracteres de un String. La unica solucion que me han dado hasta ahora es escribir el string en un fichero de texto, y leerlo caracter a caracter. Esta solucion en principio estaría bien, pero teniendo en cuenta que el proceso va a ser repetitivo el tiempo de ejecución aumentaría en sobremanera, por lo que es una opcion "poco" viable. A ver si alguien sabe como solucionar esto xDD.
El siguiente es un tema más complicado. Me gustaría conocer un poco el tema de conexiones de Sockets, para hacer una aplicacion cliente/servidor sencillita en un principio, y luego ya se verá. Demomento he visto por inet y el codigo que he encontrado es el siguiente:
--- Código: Text --- WSADATA g_DatosWS;SOCKET g_Socket;sockaddr_in g_DirRemota;sockaddr g_DirRemot;if(WSAStartup(MAKEWORD(1, 1), &g_DatosWS) != 0){ Console::WriteLine("ERROR NO SE PUDO HACE NA");}else{ g_Socket = socket(AF_INET, SOCK_STREAM, 0); if(g_Socket == INVALID_SOCKET) Console::WriteLine("No puedo crear el socket"); else { g_DirRemota.sin_addr.s_addr = inet_addr("192.168.X.X"); g_DirRemota.sin_port = htons(80); if (connect(g_Socket,g_DirRemota,??)==0) Console::WriteLine("Conexion establecida correctamente"); else Console::WriteLine("Fallo en el ultimo momento"); }} Pero el problema que tengo en este codigo es justo en la funcion Connect, puesto que el segundo parametro debería ser sockaddr y en el manual que tengo utiliza sockaddr_in (y no lo convierte automaticamente). Despues tengo problema con el tercer argumento, que se supone es el el tamaño pero ni idea de como hayarlo xDD.
Si alguien me puede ayudar se lo agradeceré ^_^
Ruben3d:
Hola.
Si tienes una cadena del tipo std::string y quieres recorrerla caracter a caracter como si se tratara de un vector de tipo char has de usar el método c_str(). Este método devuelve un puntero al buffer en donde se guarda la cadena, por lo que te puedes referir a una posición en concreto usando [].
Respecto al uso de connect, has de hacerlo así:
--- Código: Text --- connect(g_Socket, (struct sockaddr *) &g_DirRemota, sizeof(g_DirRemota)) De esta manera te funcionará perfectamente.
Espero que te haya servido de ayuda.
Un saludo.
Ruben3d
shephiroth:
Buenas. Lo primero darte las gracias por sendas respuestas. La primera no me sirve puesto que utilizo System::String en vez de std::string, si tienes alguna otra solucion...pero gracias ^_^.
Respecto al socket, gracias asi en principio compila xDD aunque ya encontré ayer un manual que viene bastante bien explicado. He de crear una clase que herede de la clase CSocket y ya tengo todo solucionado xDD
Pero gracias. xDD
Ruben3d:
Mira a ver si esto te sirve:
http://longhorn.msdn.microsoft.com/lhsdk/r...ng/p/chars.aspx
Pertenece al SDK de Longhorn, pero no creo que sea diferente al managed c++ actual.
Un saludo.
Ruben3d
Ruben3d:
Bueno, parece que sí es un poco diferente :whistling:
He buscado en la referencia de microsoft y he encontrado esta propiedad de System::String.
--- Código: Text --- [C++][Serializable]public: __property __wchar_t get_Chars( int index);
Espero que esta te sirva.
Un saludo.
Ruben3d
Navegación
[#] Página Siguiente
Ir a la versión completa