解决使用{freopen与 getline}读取不同文件时产生的的问题
Posted leprechaun-kdl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决使用{freopen与 getline}读取不同文件时产生的的问题相关的知识,希望对你有一定的参考价值。
读取单一文件
使用 freopen重定向。
用 getline逐行读取,处理。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
int main()
{
freopen("text1.in", "r", stdin);
while (getline(cin, s)) {
/* - code - */
}
fclose(stdin);
return 0;
}
读取多个文件
基本方法同上。
特别注意:在读取完一个文件后,
使用 cin.clear()清空输入流。
否则可能会有 除第一个文件,其他文件无读入的现象。
2020-1-27-1:07 在读取处理两个 txt文本数据时产生该问题。
编译环境:
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=e:/tio/dev-cpp/mingw32/bin/../libexec/gcc/mingw32/4.8.1/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8.1/configure --prefix=/mingw --host=mingw32 --build=mingw32 --without-pic --enable-shared --enable-static --with-gnu-ld --enable-lto --enable-libssp --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++,ada --disable-sjlj-exceptions --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --with-gmp=/usr/src/pkg/gmp-5.1.2-1-mingw32-src/bld --with-mpc=/usr/src/pkg/mpc-1.0.1-1-mingw32-src/bld --with-mpfr= --with-system-zlib --with-gnu-as --enable-decimal-float=yes --enable-libgomp --enable-threads --with-libiconv-prefix=/mingw32 --with-libintl-prefix=/mingw --disable-bootstrap LDFLAGS=-s CFLAGS=-D_USE_32BIT_TIME_T
Thread model: win32
gcc version 4.8.1 (GCC)
编译命令:
g++ Name.cpp -o Name.exe
正确示例:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
int main()
{
freopen("text1.in", "r", stdin);
while (getline(cin, s)) {
/* - code - */
}
fclose(stdin);
cin.clear();
freopen("text2.in", "r", stdin);
while(getline(cin, s)) {
/* - code - */
}
fclose(stdin);
// ...
return 0;
}
以上是关于解决使用{freopen与 getline}读取不同文件时产生的的问题的主要内容,如果未能解决你的问题,请参考以下文章