将缓冲区与字符进行比较是无效的

Comparing a buffer with a char does not work

本文关键字:比较 无效 缓冲区 字符      更新时间:2023-10-16

我正在制作一个函数,从.txt文件打印整行,直到到达行的末尾,但它似乎不起作用,因为它打印出了整个文本(是的,Sleep()函数实际上在这段时间内起作用)

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",并用>"y"替换>"\n",但仍然不起作用。它怎么了?

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

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

通过使用临时char变量,可以消除内存碎片和内存管理(分配和释放)问题。此外,它消除了对内存管理器的调用,从而提高了程序的效率(该过程可能会将一个字符放入寄存器中,而不使用内存)。