c++ - 有没有比 getchar() (C/C++) 更快地读取字符串的方法?

标签 c++ c input

我正在参加一些编程比赛,在很多问题上都需要从输入文件中读取字符串。显然,性能是这些比赛的一个大问题,字符串可能很大,所以我试图了解读取这些字符串的最有效方法。

我的猜测是,使用 getchar() 一个字符一个字符地读取字符串是最快的。这是因为即使您使用其他函数,比如 fgets() 或 getline(),这些函数仍然需要读取每个字符。

更新:我知道 I/O 不会成为大多数算法问题的瓶颈。话虽这么说,我仍然非常想知道您可以用来读取字符串的最快方法是什么,这是否会成为 future 任何问题的一个问题。

最佳答案

您可以使用 std::istream::read() 函数来读取一大块未格式化的数据。它相对更快,正是因为数据未格式化operator>> 的所有重载> 都读取格式化 数据,与read() 相比,这使得从流中读取速度较慢。

同样,您可以使用 std::ostream::write() 函数一次将一大块数据写入输出流。

关于c++ - 有没有比 getchar() (C/C++) 更快地读取字符串的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952395/

相关文章:

c - 使用 _Generic 进行 printf 格式化

jquery - 带有注入(inject)数据和下拉菜单的 X-可编辑自定义输入

python - 自动填充可变大小的命令行输入

c# - 使用 Unity 的新输入系统检测鼠标滚轮滚动输入

c++ - Windows Media 基金会 : How to set an encoder property?

c++ - 优化嵌套 C++ 循环中的乘法器

c++ - 在应用程序文件夹中为 C/C++ 安装库 "IGRAPH"

c - 如果范围是一个不同的struct定义,那么struct声明是否存在于声明范围之后?

Java数学转换

c++ - fopen 非 ASCII 字符错误