String类型变INT类型

来源:百度知道 编辑:UC知道 时间:2024/05/25 23:07:27
如果把Sting类型“2007-07-03”变成Int类型20070703 ?

我是先把String用split()方法变成数组,可是下面就不知道该如何把数组中的各个元素和到一起了

我下面该如何做呢?
是在JAVA中如何实现,MS_Frank你说的那些,好象没有这个方法

char *p = new char[4096];

cout << sizeof(p);

delete [] p;

相信你能理解...

看来我高估你了, 我是高考前3个月自学的, 你连这些都没搞明白的话那就是你书选错了.

你说我答非所问?
我先声明你这个问题涉及到的不单单是sizeof(p)的问题, 因为你sizeof的是一个类, 这还将涉及到类和结构的内存对齐问题. 不过你能注意到这个细节上的问题说明你还是有一定的潜质.

至于string类, 它的容量是动态增长的, 所以其类的内部实现肯定有关于动态内存的操作, 这和数组的定义是不同的, 数组的大小是在编译期间就确定的, 而string类的大小是在程序运行期间动态确定的,你先看看这段代码:

#include <iostream>
using namespace std;

struct Test
{int* p;};

int main()
{
Test t;
cout << sizeof(t); // 32位机器上毫无疑问的4字节, 你我共识

t.p = new int[4096];
cout << sizeof(t); // 会变吗?

delete [] t.p;
}

再看string类的真面目, 打开string文件, 你可以看到这句:
typedef basic_string<char> string;
所以其只是basic_string对于char类型的一个typedef, 这样的话其内部的字符序列就肯定是用char* 类型指针来来操作的了, 毫无疑问sizeof(char*) == 4, 但是为什么sizeof(string) == 16呢, 这是因为string类中还有其他的数据成员, 比如记录字符长度的数据成员是一个32位的无符号整型,