几个C++的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 04:16:49
ios这个类是在哪个头文件中定义的?
ifstream接受的参数类型是什么?字符串还是字符指针?
如何把字符串和其他常量合并成一个新的字符串?比如"This is "+1。
有一个字符串的数组,如何计算出其中元素的个数?
<stdexcept>里面的类是不是都继承了exception?

谢谢。
3.我试了一下,ostringstream类的确可以把其他类型合并为字符串?不过有没有其他容易点的方法?
4.似乎字符串的大小都是32字节,不论长短,那动态分配的空间不会被算进去吗?

帮你查了下,自己带复习:
1、在<iosfwd>中,是basic_ios的模版typedef:
typedef basic_ios<char, char_traits<char> > ios;

2、是C风格字符串也就是char*或wchar_t*;

3、include <sstream>
ostringstream osstrm;
osstrm << "This is " << 1;
cout << osstrm.str();

4、include <cstring>
char a[] = "123456";
size_t len = strlen(a);
或者
len = string(a).size();

5、都直接或间接地继承了exception类。

补充:
1、很简单因为iostream等其他标准IO文件都已经包含过了iosfwd,iosfwd即ios forward,是标准IO库函数的模版预前声明,它的类实现的库是肯定要包含它的;

3、楼主再好好看看;

4、sizeof(s) / sizeof(string)。

补充2:
string为什么可以动态伸长和收缩?最简单的解释就是它用来存储字符的空间是动态的,可以自己试一试,定义2个长度相差很大地字符串,sizeof他们试试,还不确信的话,打开string类的标准库文件,跟踪一下相关定义也就了解了。

补充3:
int* p;

cout << sizeof(p);

p = new int[xxx];

cout << sizeof(p);

你问你的就是这个问题,无论给p new了多少内存,在sizeof的时