将缓冲区与字符进行比较是无效的
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 = ' ';
while (b != 'n')
{
file.read(&b,1);
cout << b;
Sleep(tm);
}
Sleep(time);
}
通过使用临时char
变量,可以消除内存碎片和内存管理(分配和释放)问题。此外,它消除了对内存管理器的调用,从而提高了程序的效率(该过程可能会将一个字符放入寄存器中,而不使用内存)。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 在这种情况下,可以比较无效的迭代器
- 不同指针类型之间的无效比较:'type*' 和 'type&(*)()'
- (C++)比较两段代码,一段有效,一段无效,无法找出区别
- 指针与无效字符合法的比较
- C++ 无效的比较器排序结构向量
- 将缓冲区与字符进行比较是无效的
- "二进制表达式的操作数无效..."尝试比较regex_iterators时
- 映射运算符<条件 - 无效的比较器
- C++否定结果时运算符重载中的“无效比较器”错误
- 在 c++ 中使用 strcmp 比较两个 char 变量显示从 'char' 到 'const char*' 的无效转换