这篇文章主要讲解了“C++怎么用Read4来读取N个字符”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么用Read4来读取N个字符”吧!
用Read4来读取N个字符
这道题给了我们一个 Read4 函数,每次可以从一个文件中最多读出4个字符,如果文件中的字符不足4个字符时,返回准确的当前剩余的字符数。现在让实现一个最多能读取n个字符的函数。这题有迭代和递归的两种解法,先来看迭代的方法,思路是每4个读一次,然后把读出的结果判断一下,如果为0的话,说明此时的 buf 已经被读完,跳出循环,直接返回 res 和n之中的较小值。否则一直读入,直到读完n个字符,循环结束,最后再返回 res 和n之中的较小值,参见代码如下:
解法一:
// Forward declaration of the read4 API.int read4(char *buf);class Solution {public: int read(char *buf, int n) { int res = 0; for (int i = 0; i <= n / 4; ++i) { int cur = read4(buf + res); if (cur == 0) break; res += cur; } return min(res, n); }};
下面来看递归的解法,这个也不难,对 buf 调用 read4 函数,然后判断返回值t,如果返回值t大于等于n,说明此时n不大于4,直接返回n即可,如果此返回值t小于4,直接返回t即可,如果都不是,则直接返回调用递归函数加上4,其中递归函数的 buf 应往后推4个字符,此时n变成n-4即可,参见代码如下:
解法二:
// Forward declaration of the read4 API.int read4(char *buf);class Solution {public: int read(char *buf, int n) { int t = read4(buf); if (t >= n) return n; if (t < 4) return t; return 4 + read(&buf[4], n - 4); }};
感谢各位的阅读,以上就是“C++怎么用Read4来读取N个字符”的内容了,经过本文的学习后,相信大家对C++怎么用Read4来读取N个字符这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!