如何解决如何阅读特定数量的字符
我可以使用以下代码从控制台获取字符: 每次在新行中显示2个字符
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
char ch[3] = "";
ifstream file("example.txt");
while (file.read(ch,sizeof(ch)-1))
{
cout << ch << endl;
}
return 0;
}
我的问题是,如果字符集为奇数,它将不会在文本文件中显示最后一个字符!
我的文本文件包含以下内容: abcdefg
它在控制台中不显示字母g 其显示如下:
- ab
- cd
- ef
我想这样显示:
- ab
- cd
- ef
- g
我想用它一次读取一个大文件的1000个字符,所以我不想逐个字符地读取字符,这会花费很多时间,但是如果您可以修复它或拥有一个更好的字符就存在问题建议,和我分享
解决方法
下面的代码应该起作用:
while (file) {
file.read(ch,sizeof(ch) - 1);
int number_read_chars = file.gcount();
// print chars here ...
}
通过将read
调用移入循环,您将能够处理上一个字符太少的最后一个调用。 gcount
方法将为您提供信息,最后一次未格式化的输入操作实际读取了多少个字符,例如read
。
请注意,如果您打算将缓冲区用作C,则当读取少于sizeof(ch)
个字符时,必须手动在NUL
返回的位置插入一个gcount
字符。字符串,因为这些字符串以null结尾:
ch[file.gcount()] = '\0';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。