我正在参加一些编程竞赛,在许多问题上,需要从输入文件中读取字符串.显然,性能是这些竞争中的一个大问题,字符串可能很大,所以我试图理解读取这些字符串的最有效方法.
我的猜测是,使用getchar()读取char字符串char是最快的.那是因为即使你使用其他函数,比如fgets()或getline(),这些函数仍然需要读取每个char.
更新:我知道I/O不会成为大多数算法问题的瓶颈.话虽如此,我仍然非常想知道什么是你用来读取字符串的最快方法,如果这成为任何未来问题的问题.
您可以使用std::istream::read()函数来读取一大块未格式化的数据.它的速度相对较快,因为数据未格式化.operator>>读取格式化数据的所有重载使得从流中读取的速度比较慢read().
同样,您可以使用std::ostream::write()函数一次将一大块数据写入输出流.