我正在尝试做一些文件读/写的东西,我无法运行我的第二个getline命令。关于为什么会发生这种情况的任何想法?
char str[80];
char substr[10];
file.open("abc.txt", fstream::in);
file.getline(str,'\n');
while(!file.eof())
{
i=0;
while(str[i]!='\n') {substr[i] = str[i++]; }
substr[i++]='\n';
cout<<substr;
file.getline(str,'\n');
}
的abc.txt
AND 1 2 3
NAND 4 5 6
NOR 2 3 7
XOR 1 6 8
OR 8 7 9
我使用notepad ++来创建txt文件,所以我很确定每行末尾都有CR / LF
答案 0 :(得分:1)
fstream::getline
的第二个参数是streamsize,而不是分隔符。对于分隔版本,您需要重载版本。请参阅this reference。
答案 1 :(得分:-1)
跟进我的评论,尝试在while循环中移动file.getline命令:
...
while(!file.eof())
{
file.getline(str,80,'\n');
...
答案 2 :(得分:-1)
这很有效。在while条件中使用getline()并获取由'\ n'分隔的字符串并使用strcpy。
char str[80] = { '\0' };
char substr[80] = { '\0' };
ifstream file;
file.open("abc.txt", fstream::in);
int i = 0;
while(file.getline(str, 79, '\n'))
{
strncpy(substr, str, 78);
substr[strlen(substr)]='\n';
cout<<substr;
}