Leer caracteres de la tabla ascii dentro de un std::string [PERGUNTA]

Iniciado por bash, 20 Julio 2015, 22:34 PM

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

bash

Buenaas !! Saludo !!!


tengo una pequena duda estoy leyendo algo sobre caracteres de la tabla ascii estoy usando un cast a char pero cuando ingreso el retorno de linea (13) por ejemplo nop pasa nada por lo menos cuando comparo directamente con caracteres quizas lo estoy haciendo mal , por que tengo una funcion que si me da los espacios que quiero por ejemplo dejare los codigos de ambos para que vean que trato de decir .... gracias

... solo me gustaria un consejo que deberia de hacer por favor no quiero el codigo me he dado cuenta que quizas a veces pregunto por algo y me dan el codigo y la verdad me gustaria solo un consejo gracias !!!!  :laugh: :laugh: :laugh: 
y disculpen las molestias !!!!!!

Código (cpp) [Seleccionar]
void Editor()
{

string filename;
cout <<"por favor ingrese el  del fichero que va a editar"<<endl;
    ///analizar texto/
getline(cin , filename, '$');
for(string::iterator it =filename.begin(); it != filename.end(); it++)
{
if(*it == (char)13 || *it == (char)3)
cout <<"Salto de linea \n "<<endl;
else
cout << '\n' << *it <<endl;  ///aqui me imprime todo los caracteres
                                                                 ///incluyendo los espacios y los enter
                                                                 ////solo es parte del codigo de la
                                                               //// asi que el nomnre lo pueden ignorar.....
}
}



en este por ejemplo el espacio si sale como deseo pero en el codigo de arrba no pasa nda d
Código (cpp) [Seleccionar]
void PrintSpace(unsgined int cnt)
{
    for(auto e(0) : cnt )
       cout <<( char ) 32;
}



Gracias por los consejos !!
gracias por responder mis dudas

ivancea96

#1
Prueba con 10 en vez de 13. Y a todo esto, hay una forma más legible de hacerlo, y es poniendo '\n' en vez de (char)10. No hay necesidad de andar con todos los números en la mano. Un caracter en C/C++ es un número de por sí (de 1 byte generalmente), y puedes trabajar con él como tal.

También puedes poner, si quieres un caracter a partir de su valor ASCII Hexadecimal, '\x0A'.


Y a todo esto, ¿qué compilador usas?

user-marcos

Los saltos de linea se pueden comparar así:

Código (cpp) [Seleccionar]

char salto = '\n'; 
  if(salto == '\n')
     //....

bash

Primero que todo gracias colegas !! entiendo que es mal legible hacerlo usando '\n' pero la verdad lo puse por ejemplo ayer no se me ocurria poner otra cosa , por ejemplo como dice  la firma de la funcion , trato de hacer un "editor" y la verdad queria probar mas cosas por ejemplo cuando manda start of text STX , cuando manda el NUL   cuand es ETX  end of text , claro dependiendo que quiera hacer en el momento ayer solo queria 'parsear ' los saltos de linea usando solo ele codigo ascii . un ejemplo es el notepad++ cuando abro un fichero que contienen algunos de los valores el lo representa por que fue programado para eso ... y me gustaria tener control sobre eso.  seguire probando y preguntando a ver que sale ...  ;-) :silbar:
gracias por responder mis dudas

ivancea96

En C++ no tienes que tratar con STX, ETX ni otros códigos de ningún modo.

Los archivos binarios, tendrán esos códigos, pero no como tal, sino como simples valores numéricos.

bash

si entiendo , de hecho ningun lenguaje esta hecho para trabajar con ellos pero la cosa es que me gustaria poder manipularlos, ahora me pondre a tratarlo a ver que sale. bueno seguro a muchos no le hace sentido tratar de acceder a esa informacion , pero verdad Gracias Por la aclaracion igual si lo termino mostrare algo de lo que trato de hacer!! ;-) ;-)
gracias por responder mis dudas