今天用EditPlus设置好了最新的g++开发环境,可是结果好家伙,连cout都不认识了,简简单单的一个"Hello word!"都不能通过阿!然后干紧上网去查,才发现,C++的新标准已经制定了,上学的时候学的Turboc还有谭好强的那本c语言都已经过时很久了。中国的教育还真是落后呢,在学校学的就是非标准的,一开始就学VC++,也搞得对标准C++不了解了。现在只好补课,去掉脑子里原来那些遗毒。g++其实和gcc都是GNU的c++/c编译器,至于区别,有人说gcc兼容性不好,不能编译c++,这个我就不清楚了,只是道听途说,有时间了试试就知道了。
下面看:C++的iostream标准库介绍
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
istringstream类用于执行C++风格的串流的输入操作。
stringstream类同时可以支持C++风格的串流的输入输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。
他们的继承关系如下图所示:
istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
istringstream istr;
istr.str("1 56.7",);
//上述两个过程可以简单写成 istringstream istr("1 56.7");
cout << istr.str()<<endl;
int a;
float b;
istr>>a;
cout<<a<<endl;
istr>>b;
cout<<b<<endl;
system("pause"); //或者用”return 0;”(其实必须加的,不然编译时就会报告的!)
}
上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入"赋值"操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。
str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<<istr.str();)。
^_^看明白了吧,有一些变化,原先我们都是用<iostream.h>来引入标准输入输出流库,现在改进了,将标准库变成了类,然后标准C++使用时,是要声明名字空间的(什么?我没听说过!去骂谭好强吧:))看到using namespace XXXX;了吧!那就是声明,一般我们作些小东西都是直接用系统默认得名字空间就可以了,就是std.所以回去把Hello world给改了一下就顺利通过了!
#include <iostream>
using namespace std;
int main()
{
cout<< "Hello world!"<<endl;
return 0;
}
注意一下哦,要是用g++编译的话,最后必须打一个空行,这样文件连接时才不会出错,否则编译时会报错。还有由于这个Hello world中没有创建ostringstream、istringstream、stringstream三个类的对象所以没有加 #include<sstream>,如果你要复杂些地Hello world,这也有一个可以参考:
#include <iostream>
using namespace std;
int main (int argc, char *argv[])
{
char quit;
quit = '/0';
while (quit != 'q')
{
cout << "Hello ! This is a console app." << endl;
cout << "To create a console, go to Project Options and select" << endl;
cout << "/'Win32 Console/'." << endl;
cout << "Press /'h/' to see Chinese; Press q to quit " << endl;
cin >> quit;
if(quit =='h')
{
cout <<"你好!这是一个命令行方式的应用。"<< endl;
cout <<"想要创建类似的工程,请去工程项中选择 /'win32命令控制台/'"<< endl;
cout << "按q键退出"<< endl;
}
}
return 0;
}
好了,剩下的下回分解,今天好么忙别的,遇见一个解决一个。新的c++标准好像《c++ primer》很不错,中文版翻译的也好,多看看得好,最新的是第三版。建议学C++的去买那一本就好了,其它的乱七八糟的就不用买了,添乱。