ayuda→traducir de VB 6.0 a C++

Iniciado por <[(x)]>, 20 Octubre 2011, 04:33 AM

0 Miembros y 1 Visitante están viendo este tema.

<[(x)]>

hola ... me podrían dar una mano con este pekeñin que hice en vb y no puedo traducir.

Codigo VB 6.0:
Código (vb) [Seleccionar]
Dim StrCadena As String

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Form_Load()

StrCadena = "1"
List1.AddItem "1"
End Sub

Private Sub Timer1_Timer()

Dim i As Integer
Dim IntCont As Integer: IntCont = 0

Dim ChrNum As String

Dim StrAux As String: StrAux = ""

ChrNum = Mid(StrCadena, 1, 1)

For i = 1 To Len(StrCadena)

   If ChrNum = Mid(StrCadena, i, 1) Then
   
     IntCont = IntCont + 1
   Else
   
     StrAux = StrAux + CStr(IntCont) + ChrNum
     IntCont = 1
     ChrNum = Mid(StrCadena, i, 1)
   End If
Next i

StrCadena = StrAux + CStr(IntCont) + ChrNum
List1.AddItem StrCadena

List1.Selected(List1.ListCount - 1) = True
List1.Selected(List1.ListCount - 1) = False
End Sub



El código que llevo hecho en c++:
Código (cpp) [Seleccionar]
#include <string>
#include <iostream>
using namespace std;

string IntToStr(int numero)
{
 stringstream cvz;
 cvz << numero;
 return cvz.str();
}

int main(void)
{
int i=0;
int IntCont = 0;
char ChrNum;

string StrCadena ="1";
string StrAux = "";

ChrNum =  StrCadena[i];

for (;;)
{

  for (i=1; i <= StrCadena.size() ;i++)
  {
    if (ChrNum ==  char(StrCadena[i]))
     {
       IntCont++;
     }
     else
     {
       StrAux += IntToStr(IntCont) + ChrNum;
       ChrNum =  StrCadena[i];
       IntCont = 1;
     }
   }
   StrCadena = StrAux + IntToStr(IntCont) + ChrNum;
   cout << StrCadena << endl;

};

return 0;
}



Salida de $ g++ -o a a.cpp:
Citar
a.cpp: En la función 'std::string IntToStr(int)':
a.cpp:8:16: error: el agregado 'std::stringstream cvz' tiene un tipo incompleto y no se puede definir


desde ya gracias por su tiempo  :-*
<[(x)]>

<[(x)]>

<[(x)]>

<[(x)]>

<[(x)]>

ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Иōҳ

#4
vas 198 post, y no sabes que existe el Botón EDIT?, .__.

No programo en c++, pero creo que esto es básico. "Tipos de Datos"

Citarstring StrAux = "";
Es un String!

Citar
StrAux += IntToStr(IntCont) + ChrNum;
E intentas sumarlo con un INT?

y no entiendo que quieres hacer con esto
Citarfor (;;)

Un bucle infinto?, si es así porque no usar WHILE?, y si es lo que estoy pensando (bucle infinito), creo que no va hacer para nada eficiente hacerlo.

Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

oPen syLar

"+" en C++ admite "+" ¿?


Porque no intentas cambiar el tipo de dato "string" a "char" y lo manejas con strncpy/strncat ¿? estas uniendo un "string" con un int.. Y eso no es valido en C  a menos que utilices funciones como sprintf
Siempre habra 2 verdades, la que quieres creer y la que no aceptaras

<[(x)]>

_Иōҳ :

Código (cpp) [Seleccionar]
StrAux += IntToStr(IntCont) + ChrNum;

la clase string sobrecarga estos operadores deforma que se pueda agregar y concatenar cadenas.

el for infinito fue propósito xD.

Por el momento tengo problemas con el erro
Citarel agregado 'std::stringstream cvz' tiene un tipo incompleto y no se puede definir

si alguien me podría decir como solucionarlo echarme una mano o algo...

trabajo en linux con gcc y en windows con dev++

<[(x)]>