读书人

c++输入流可不可以定位

发布时间: 2013-08-01 15:23:18 作者: rapoo

c++输入流可否定位
int _tmain(int argc, _TCHAR* argv[])
{
int a;
double c;
std::string str;
std::cin>>a;
std::cin.seekg(0,std::ios::beg);
std::cin>>c;
std::cout<<a<<c;
return 0;
}
输入:123.456
输出结果如何?

[解决办法]
不懂 没有深入理解
[解决办法]
标准输入输出流的具体缓冲流类是单独设计的,它没有设计定位的功能,所以使用seek系列函数是无效的,想让cin、cout具备定位能力,需要替换它们的具体缓冲流类,改为stringbuf或者filebuf等皆可,例如:


std::stringbuf buf( std::ios_base::in );
buf.str( "123 456" );
std::streambuf* oldBuf = std::cin.rdbuf( &buf );
int a;
std::cin.seekg( 3, std::ios_base::beg );
std::cin >> a;
std::cout << a;
std::cin.rdbuf( oldBuf );

[解决办法]
cin中要定位,你是想完成什么样的功能?
也许不需要定位,有其他方法能满足你的想法的。

读书人网 >C++

热点推荐