首页 > 开发 > C++ > 正文

关于 stdin 重定向的问题

2017-09-11 21:35:55  来源: 网友分享
#include "iostream"using namespace std ;int main(){	char str[128] ;	freopen( "a.txt" , "r" , stdin ) ;	cin >> str ;	cout << str << endl ;	fclose(stdin) ;	freopen( "b.txt" , "r" , stdin ) ;	cin >> str ;	//scanf( "%s" , str ) ; 如果用scanf 是可以的	cout << str << endl ;		return 0 ;}

a.txt 里只有一行字符串 “aaaaaaaaaaaaaaa”
b.txt 里只有一行字符串 “bbbbbbbbbbbbbbb”
但是只看输出 a.txt 里的 求解。

如果使用注释掉的那一行,注释掉其前面的 cin >> str 的话 , 则两个文件里的都打印出来了 。求解。

解决方案

#include "iostream"#include<stdio.h>using namespace std ;int main(){	char str[128] ;	freopen( "a.txt" , "r" , stdin ) ;	cin >> str ;	cout << str << endl ;	fclose(stdin) ;	freopen( "b.txt" , "r" , stdin ) ;	cin >> str ;	//scanf( "%s" , str ) ; 如果用scanf 是可以的	cout << str << endl ;   	return 0 ;}