将缓冲区与char进行比较不起作用

时间:2015-02-11 17:07:25

标签: c++

我正在创建一个函数来从.txt文件中打印整行,直到到达行的末尾,但它似乎不起作用,因为它打印出整个文本(是的, Sleep()函数实际上适用于while)

void string_push(ifstream& file, string text, int time,int tm){
    char * buffer = new char [1];
    while (*buffer != '\n'){
        file.read(buffer,1);
        cout << *buffer;
        Sleep(tm);
    }
    Sleep(time);
}

我尝试在行尾添加'y',并用&gt;'y'替换&gt;'\ n',但它仍然不起作用。怎么了?

1 个答案:

答案 0 :(得分:-1)

我不明白为什么要从动态内存创建一个包含1个字符的数组。您应该使用char变量:

void string_push(ifstream& file,  
                 string    text,
                 int       time,
                 int       tm)
{
    char b = '\0';
    while (b  != '\n')
    {
        file.read(&b,1);
        cout << b;
        Sleep(tm);
    }
    Sleep(time);
}

通过使用临时char变量,可以消除内存碎片和问题或内存管理(分配和释放)。此外,它消除了对内存管理器的调用的需要,从而使您的程序更有效(该过程可能适合寄存器中的字符而不使用内存)。