2010-11-01 5 views
3

Je dois lire les données d'un fichier pour une affectation malheureusement, au lieu d'espaces séparant les différents champs, il y a des caractères nuls. Lorsque vous prenez des entiers à partir du fichier, ils sont extraits correctement, mais avec les chaînes, je reçois juste un espace vide et des ordures de mon tableau de caractères non initialisé. Toutes les idées sur la façon d'extraire les caractères dans mon tableau de caractères en ignorant les caractères nuls.C++: lecture à partir d'un fichier avec des caractères nuls

EDIT:

char fName[15],lName[15],pMethod[5],roomType[10],purpose[15]; 

int days, roomNum; 

long guestID; 

datafile>>guestID; 
datafile.getline(fName,15,'\0'); 
datafile.getline(lName,15,'\0'); 

cout<<guestID<<endl; 
cout<<fName<<endl; 
cout<<lName<<endl; 

est le code que je utilise maintenant malheureusement fName nest pas saisir quoi que ce soit autre que nul nouveau et lName est d'obtenir la valeur de chaîne de fName. Je pensais juste à obtenir les chiffres en tant que chaîne et à les convertir.

+0

Montrez votre code qui lit les chaînes, s'il vous plaît. – vitaut

+0

char fName [15], lName [15], pMéthode [5], roomType [10], but [15]; int jours, numChambre; longIDID; Fichier de données >> guestID >> fName >> lName >> pMethod >> jours >> roomType >> roomNum >> but; était ce que je faisais avant je l'utiliser getline – Jebzaki

Répondre

4

Utilisez getline et transmettez \0 (caractère nul) en tant que délimiteur.

+0

merci beaucoup pour la réponse rapide! – Jebzaki

4

std::getline possède un argument facultatif qui est le caractère de délimitation ('\n', par défaut).

-1

boucle throught les octets et ignorer les octets de caractère nul,

0

http://www.cplusplus.com/reference/iostream/istream/read/ lire le fichier tampon en une seule fois, puis à partir de là.

+0

va l'essayer merci – Jebzaki

+0

Vous devrez faire attention à l'allocation de mémoire correcte, et aussi, vous devrez analyser les données binaires vous-même, y compris la conversion des entiers. Mais en général, la lecture de données en gros morceaux est souvent meilleure. Le lien fait l'allocation de la mémoire à droite. – Coder

Questions connexes