2010-02-09 13 views
11

Estoy aprendiendo C++ por primera vez. No tengo antecedentes de programación previos.Confusión de C++. Lectura de enteros desde archivo de texto. Convertir a ASCII

En el libro que he visto este ejemplo.

#include <iostream> 

using::cout; 
using::endl; 

int main() 
{ 
    int x = 5; 
    char y = char(x); 

    cout << x << endl; 
    cout << y << endl; 

    return 0; 
} 

El ejemplo tiene sentido: imprimir un número entero y la representación ASCII del mismo.

Ahora, creé un archivo de texto con estos valores.

48 
49 
50 
51 
55 
56 
75 

Estoy escribiendo un programa para leer este archivo de texto - "theFile.txt" - y quieren convertir estos números para el valor ASCII.

Aquí está el código que escribí.

#include <iostream> 
#include <fstream> 

using std::cout; 
using std::endl; 
using std::ifstream; 

int main() 
{ 
    ifstream thestream; 
    thestream.open("theFile.txt"); 

    char thecharacter; 

    while (thestream.get(thecharacter)) 
    { 
     int theinteger = int(thecharacter); 
     char thechar = char(theinteger); 
     cout << theinteger << "\t" << thechar << endl; 
    } 


    system ("PAUSE"); 
    return 0; 
} 

Tengo entendido el segundo programa que se muestra.

  • El compilador no sabe el tipo exacto de datos que se encuentra en "theFile.txt". Como resultado, debo especificarlo así que elijo leer los datos como un char.
  • Leí cada dígito en el archivo como un carácter y lo convertí a un valor entero y lo almacené en "el entero".
  • Como tengo un número entero en "theinteger", quiero imprimirlo como un caracter pero char thechar = char (theinteger); no funciona como se esperaba

¿Qué estoy haciendo incorrecto?

+0

Entonces, ¿qué * * hace su programa en este momento? – Sam

+0

¿No debería ser 'using std :: cout;'? – Manuel

+0

Gracias por notar mi error. Yo presenté el código equivocado. Lo actualizará en unos minutos. – newbie

Respuesta

2

Está leyendo un char a la vez del archivo. Por lo tanto, si el archivo contiene:

2424 

en primer leer el char "2" del archivo, convertirlo a un int, y luego de vuelta a un char, que imprimirá "2" en cout. La siguiente ronda imprimirá "4", y así sucesivamente.

Si desea leer los números como números completos, tiene que hacer algo como:

int theinteger; 
thestream >> theinteger; 
cout << char(theinteger) << endl; 
+0

Oh, lo entiendo. A (char) acter es un single. Oh mi por mi tonto error. – newbie

6

Estás leyendo char char, pero que realmente (creo) que desee leer cada secuencia de dígitos como un entero. Cambiar su bucle para:

int theinteger; 
while (thestream >> theinteger) 
{ 
    char thechar = char(theinteger); 
    cout << thechar << endl; 
} 

+1 Para un muy buen formato & expresaron primera pregunta, por cierto!

+0

Sí, tienes razón, Neil. Quiero leer cada número como completamente. Cada número está en su propia línea. ¿Es común hacer descuidos como este ya que intentas hacer algo pero utilizas los comandos incorrectos? Espero que tenga sentido. – newbie

Cuestiones relacionadas