getline函数奇怪的错误

时间:2011-09-04 20:52:18

标签: c++ getline

我正在尝试做一些文件读/写的东西,我无法运行我的第二个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

3 个答案:

答案 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;      
}