[英]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.