我正在创建一个函数来从.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',但它仍然不起作用。怎么了?
答案 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
变量,可以消除内存碎片和问题或内存管理(分配和释放)。此外,它消除了对内存管理器的调用的需要,从而使您的程序更有效(该过程可能适合寄存器中的字符而不使用内存)。