2010-11-01 181 views
3

不幸的是,我不得不从文件中读取文件中的数据,而不是分隔各个字段的空格。当从文件中取出整数时,它们被提取出来很好,但是字符串刚刚从未初始化的字符数组中获得了空格和垃圾。任何想法如何只提取字符到我的字符数组忽略空字符。C++:从空字符文件中读取

编辑:

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再次抓住null之外的任何 和LNAME越来越FNAME的字符串值。正在考虑将数字作为字符串并将其转换。

+0

请显示您的代码,请读取字符串。 – vitaut 2010-11-01 17:20:04

+0

char fName [15],lName [15],pMethod [5],roomType [10],purpose [15]; int days,roomNum; long guestID; \t \t datafile >> guestID >> fName >> lName >> pMethod >> days >> roomType >> roomNum >> purpose; 就是我之前所做的事情,我将使用getline – Jebzaki 2010-11-01 17:23:54

回答

4

使用getline并通过\0(空字符)作为分隔符。

+0

非常感谢您的快速回复! – Jebzaki 2010-11-01 17:20:54

4

std::getline有一个可选的参数,它是分隔符(默认为'\n')。

-1

循环throught字节,而忽略空字符字节,

0

http://www.cplusplus.com/reference/iostream/istream/read/读取文件一气呵成缓冲,然后从那里出发。

+0

会试试看,谢谢 – Jebzaki 2010-11-01 23:16:36

+0

你必须注意正确的内存分配,而且你必须自己解析二进制数据,包括整数转换。但总体而言,以大块读取数据往往更好。该链接执行内存分配权。 – Coder 2010-11-01 23:20:11