Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Pasar String a wchar_T en visual c++ 2008

Estas en el tema de Pasar String a wchar_T en visual c++ 2008 en el foro de C/C++ en Foros del Web. Hola foristas tengo el siguiente problema: tengo este codigo: String ^consulta = "SELECT Nombre FROM Prueba"; cmd = gcnew SqlCommand (consulta,conn); SqlDataReader ^dr = cmd->ExecuteReader(); ...
  #1 (permalink)  
Antiguo 18/03/2013, 13:50
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Pasar String a wchar_T en visual c++ 2008

Hola foristas tengo el siguiente problema:

tengo este codigo:

String ^consulta = "SELECT Nombre FROM Prueba";
cmd = gcnew SqlCommand (consulta,conn);
SqlDataReader ^dr = cmd->ExecuteReader();
while(dr->Read())
{
// Deja en una linea de impresion ambos campos, para agregar otro campo solo copiar +" "+


*Console::WriteLine(Convert::ToString(dr["Nombre"]));*



}
//Cierra SqlDataReader dr.
dr->Close();

este código realiza una consulta básica a una tabla de prueba, arroja el nombre muy bien, pero necesito traspasar eso a un vector Char, pero desconosco alguna forma de hacerlo, o tambien lo que se me ocurrio, fue eso pasarlo a una variable string y de string pasarlo a un vector char, pero cualquier funcion que desee colocar no me funciona, creo q es problema de libreria. el asunto que necesito que sea en vector char, ya que despues ese valor de va a otras funciones donde sus entradas son en char [], ojala me aya expresado claramente para que me pudiedan ayudar..... muchas gracias
  #2 (permalink)  
Antiguo 18/03/2013, 13:57
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

String tiene un método para pasarlo a array de chars (más bien a puntero hacia array):

Código C++:
Ver original
  1. string a = "asd";
  2. const char *b =  a.c_str();

Para convertirlo a wchar_t necesitas primero pasar el string a wstring (widestring)

Código C++:
Ver original
  1. string a = "asd";
  2. wstring b = wstring(a.begin(),a.end());
  3. const wchar_t *c = b.c_str()

Y luego pasar el wstring a wchar_t mediante el mismo método.


Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 18/03/2013 a las 14:04
  #3 (permalink)  
Antiguo 18/03/2013, 14:07
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

Me dice que
- c_str debe tener operador izquierdo...
- no se encontro un operador que adopte un operando en la parte derecha del tipo 'char *', o bien no existe una conversion aceptable.....

estos son los encabezados que utilizo....

#include "stdafx.h"

#using "System.dll"
#using "System.Data.dll"

using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Data::SqlClient;
using namespace System::Globalization;
  #4 (permalink)  
Antiguo 18/03/2013, 14:08
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Pon el código.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #5 (permalink)  
Antiguo 18/03/2013, 14:15
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

no se muy bien a que se deben esos errores, pero desde un principio que intente probando con esa funcion me arrojaba el mismo resultado, y si le coloco la libreria string me dice

- no se encontro el identificador...

entonces no se donde podria estar el error.... muchas gracias por la ayuda....
  #6 (permalink)  
Antiguo 18/03/2013, 14:16
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Si usas Visual Studio abre otro proyecto y evita usar la cabecera precompilada stdafx.h.

En cualquier caso presupongo que usas <string> y no <string.h> y otros errores comunes.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #7 (permalink)  
Antiguo 18/03/2013, 14:19
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

zizizizi uso #include <string>, y si retiro la cabecera precompilada me arroja un error de final de archivo inesperado ..........
  #8 (permalink)  
Antiguo 18/03/2013, 14:24
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Cita:
Iniciado por cajojeca Ver Mensaje
zizizizi uso #include <string>, y si retiro la cabecera precompilada me arroja un error de final de archivo inesperado ..........
A mí solo me funciona si en las opciones a la hora de crear un nuevo proyecto desmarco lo de precompiled header. Luego, aunque la quites en el editor sigue habiendo problemas. No sé exactamente el origen de este problema, en cualquier caso... mejor desmarcarla aunque a la hora de compilar sea más lento.

__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #9 (permalink)  
Antiguo 18/03/2013, 14:34
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

la verdad siempre lo hago de esa forma pero aun así se genera el stdafx.h y con un int tmain().... quisas estoy creando mal el proyecto y por eso me genera error, pero yo coloco nuevo->proyecto->c++-> aplicación de consola win32 y desmarco la opción de pre compilado que aparece..... y si quiero conectar la base de datos genero el proyecto en aplicación de consola CLR, o de lo contrario no me realiza la conexión a la base de datos..... creo que visual es muy complejo a la hora de generar un nuevo proyecto.... tiene tantas opciones que no sabes cual elegir ...
  #10 (permalink)  
Antiguo 18/03/2013, 14:39
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

En un principio estaría bien saber si enuncias el string directamente o usas puntero, es

Código C++:
Ver original
  1. string var

y no

Código C++:
Ver original
  1. string *var

lo digo porque me pareció ver arriba un ^ como error al intentar poner *

string es en minúscula, existen varias formas de enunciarlo, véase aquí
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #11 (permalink)  
Antiguo 18/03/2013, 14:41
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Cita:
Iniciado por dontexplain Ver Mensaje
En un principio estaría bien saber si enuncias el string directamente o usas puntero, es

Código C++:
Ver original
  1. string var

y no

Código C++:
Ver original
  1. string *var

lo digo porque me pareció ver arriba un ^ como error al intentar poner *

string es en minúscula, existen varias formas de enunciarlo, véase aquí

Luego, recuerda que es en el namespace std, ergo, indícalo si no lo hubieras hecho.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #12 (permalink)  
Antiguo 18/03/2013, 14:43
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

de solo me deja declararlo de esta forma
- String ^variable;

de cualquier otra forma me arroja error... hasta el momento puedo llegar a pasar el resultado de la consulta a esa variable string y la muestro por pantalla pero el problema viene al momento de la conversion a char [].
  #13 (permalink)  
Antiguo 18/03/2013, 14:47
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

lo coloque o no el error se mantiene en el c_str, pense en eso tb pero lo tengo escrito...
  #14 (permalink)  
Antiguo 18/03/2013, 14:49
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Cita:
Iniciado por cajojeca Ver Mensaje
de solo me deja declararlo de esta forma
- String ^variable;

de cualquier otra forma me arroja error... hasta el momento puedo llegar a pasar el resultado de la consulta a esa variable string y la muestro por pantalla pero el problema viene al momento de la conversion a char [].
La conversión es a puntero hacia constante char.

Código C++:
Ver original
  1. string a = "asd";
  2. char b[] = a.c_str(); // error porque no es capaz de determinar el tamaño
  3. const char * c = a.c_str(); // correcto
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #15 (permalink)  
Antiguo 18/03/2013, 14:55
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

me sigue marcando error en el a.c_str ..... la variable string se encuentra bien??? de la forma que la declare??.... ise todo tal cual .... pero aun persiste el problema
  #16 (permalink)  
Antiguo 18/03/2013, 14:56
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

La única forma de saberlo es que postees el código aquí. Si no, es imposible adivinarlo XD
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #17 (permalink)  
Antiguo 18/03/2013, 15:04
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

jajajaja tienes toda la razon jajajajaja..... aca va..... es extracto...

SqlCommand ^cmd;
SqlDataAdapter ^da = gcnew SqlDataAdapter;
DataSet ^ds = gcnew DataSet;


String ^A;

String ^consulta = "SELECT ID, Nombre FROM Prueba";
cmd = gcnew SqlCommand (consulta,conn);
SqlDataReader ^dr = cmd->ExecuteReader();

while(dr->Read())
{

A=Convert::ToString(dr["Nombre"]);
//char c[]=A.c_str();
const char * c= A.c_str();
Console::WriteLine(Convert::ToString(dr["Nombre"]));
}

//Cierra SqlDataReader dr para que se puedan lograr otras consultas.
dr->Close();
Console::WriteLine("Terminada la Prueba de Consulta Sql Basica! -> "+ c);
  #18 (permalink)  
Antiguo 18/03/2013, 15:32
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pasar String a wchar_T en visual c++ 2008

Eso es C# y no C++.

Cambia el título.

Mírate

http://msdn.microsoft.com/es-es/libr...(v=vs.80).aspx

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #19 (permalink)  
Antiguo 18/03/2013, 16:54
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar String a wchar_T en visual c++ 2008

yo lo tengo en cpp.... y me funciona...... entonces donde es mejor editar c++ para no cometer mas errores???

Etiquetas: vector
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:58.