2010-11-01 7 views
3

Мне нужно читать данные из файла для назначения, к сожалению, вместо пространств, разделяющих различные поля, есть нулевые символы. При взятии целых чисел из файла они извлекаются отлично, но со строками я просто получаю пробелы и мусор из моего неинициализированного массива символов. Любые идеи, как просто извлечь символы в мой массив символов, игнорируя пустые символы.C++: чтение из файла с нулевыми символами

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; 

это код, я использую в настоящее время, к сожалению, Fname разве хватая что-нибудь другое, чем нуль снова и LName получает строковое значение Fname в. Думал о том, чтобы просто получить цифры как строку и преобразовать их.

+0

Показать свой код, который читает строки, пожалуйста. – vitaut

+0

char fName [15], lName [15], pMethod [5], roomType [10], цель [15]; int days, roomNum; long guestID; \t \t datafile >> guestID >> fName >> lName >> pMethod >> days >> roomType >> roomNum >> цель; был тем, что я делал до того, как я буду использовать getline – Jebzaki

ответ

4

Использовать getline и передать \0 (нулевой символ) в качестве разделителя.

+0

Большое спасибо за быстрый ответ! – Jebzaki

4

std::getline имеет необязательный аргумент, который является символом разделителя (по умолчанию '\n').

-1

Loop Повсеместно байты и игнорировать нулевые байты символов,

0

http://www.cplusplus.com/reference/iostream/istream/read/ прочитать файл в буфер в один присест, а затем продолжить оттуда.

+0

попробует это благодаря – Jebzaki

+0

Вам нужно будет следить за правильным распределением памяти, а также вам придется самостоятельно анализировать двоичные данные, включая целочисленное преобразование. Но в целом чтение данных в больших кусках часто бывает лучше. Ссылка правильно распределяет память. – Coder

Смежные вопросы