簡體   English   中英

將緩沖區與char比較不起作用

[英]Comparing a buffer with a char does not work

我正在制作一個函數來從.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 = '\0';
    while (b  != '\n')
    {
        file.read(&b,1);
        cout << b;
        Sleep(tm);
    }
    Sleep(time);
}

通過使用臨時char變量,可以消除內存碎片和問題或內存管理(分配和釋放)。 而且,它消除了對內存管理器的調用,從而使您的程序更高效(該過程可能將字符放入寄存器中而不使用內存)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM