• 26043阅读
  • 13回复

在Qt控制台程序中如何实现输入和输出 [复制链接]

上一主题 下一主题
离线xiachm
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-22
— 本帖被 XChinux 执行加亮操作(2008-10-23) —
请问,在Qt中有没有类似std::cout 和 std::cin的函数?
离线首席公民
只看该作者 1楼 发表于: 2008-10-23
有啊
std::cout 和 std::cin是标准C++的
Qt是C++的类库  当然支持标准C++的函数了
-----------------------------------------------
欢迎访问
http://blog.csdn.net/wjstone
-----------------------------------------------
离线xiachm

只看该作者 2楼 发表于: 2008-10-23
我是想问,Qt有没有提供类似函数,如果按照2楼的说法,Qt还要QString、QMap、QVector...做什么?Qt对基本的C函数都有封装的,像qstrlen、qstrncpy、qrand,如果要用std::cin,我就只能把文字输到std::string中,然后在用他构造一个QString,这多少有点罗嗦,如果Qt有个函数能直接从控制台输入一串文字到QString不是更方便吗?
离线首席公民
只看该作者 3楼 发表于: 2008-10-23
QString str;
QTextStream in(stdin);
in >> str;



此外
QTextStream & operator>> ( QChar & c )
QTextStream & operator>> ( signed short & i )
QTextStream & operator>> ( float & f )
QTextStream & operator>> ( QString & str )
QTextStream & operator>> ( char & c )
QTextStream & operator>> ( unsigned short & i )
QTextStream & operator>> ( signed int & i )
QTextStream & operator>> ( unsigned int & i )
QTextStream & operator>> ( signed long & i )
QTextStream & operator>> ( unsigned long & i )
QTextStream & operator>> ( qlonglong & i )
QTextStream & operator>> ( qulonglong & i )
QTextStream & operator>> ( double & f )
QTextStream & operator>> ( QByteArray & array )
QTextStream & operator>> ( char * c )
-----------------------------------------------
欢迎访问
http://blog.csdn.net/wjstone
-----------------------------------------------
离线xiachm

只看该作者 4楼 发表于: 2008-10-23
果然有效,谢谢老兄
离线csoapy

只看该作者 5楼 发表于: 2009-01-07
引用第3楼首席公民于2008-10-23 22:12发表的  :
QString str;
QTextStream in(stdin);
in >> str;
.......


这是输入,输出呢?把 >>方向倒过来,把in换成out不成啊
离线445363200
只看该作者 6楼 发表于: 2009-01-18
哈哈,受教了
离线isti

只看该作者 7楼 发表于: 2009-01-22
引用第5楼csoapy于2009-01-07 10:49发表的  :
这是输入,输出呢?把 >>方向倒过来,把in换成out不成啊


QString str;
QTextStream in(stdout);
in >> str;
要把stdin改为stdout,同时将>>倒过来,这样就可以输出了。in只是个对象名,不关名称的事啊。
离线kosmanthus
只看该作者 8楼 发表于: 2009-04-25
要加头文件吗?各位都在什么IDE下开发的啊?
离线harry6516
只看该作者 9楼 发表于: 2010-05-17
QString str="asdasd";    
QTextStream out(stdout);
out<<str;
这样不能够输出str的值啊?
求助……
test
离线zb0803
只看该作者 10楼 发表于: 2010-12-28
引用第9楼harry6516于2010-05-17 17:03发表的  :
QString str="asdasd";    
QTextStream out(stdout);
out<<str;
这样不能够输出str的值啊?
求助……




在你输出str以后再输出回车。也就是下面的代码:
QString str="asdasd";    
QTextStream out(stdout);
out<<str<<endl;
或者把最后一句程序分成两句:
out<<str;
out<<endl;

我实验了一把!如果不在最后加endl,程序就是输不出来东西。不知道为什么呢!研究ing......
希望有知道的大虾给说说!
离线luoyes

只看该作者 11楼 发表于: 2010-12-29
原来还可以这样用,有意思,mark
离线ywjtssln
只看该作者 12楼 发表于: 2010-12-30
回 10楼(zb0803) 的帖子
...因为输出流有缓冲机制,终端一般是行缓冲。一行满了才显示。。所以加了endl之后就直接显示了,不加的话,你程序结束后应该也会显示的
离线swift19221
只看该作者 13楼 发表于: 2011-03-23
增加一行:
out.flush();

QTextStream类有自己的缓存机制,
标准C中可以用 setvbuf(...)来改变缓存机制,
但是这个函数对QTextStream无效,
我也不知道如何改变这个类的缓存机制,
如果你知道请告诉我
快速回复
限100 字节
 
上一个 下一个