首页
社区
课程
招聘
[求助]basic_string<char,std::char_traits<char>,std::allocator<char> 是什么意思
发表于: 2009-6-9 10:44 30019

[求助]basic_string<char,std::char_traits<char>,std::allocator<char> 是什么意思

2009-6-9 10:44
30019

msvcp80.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::data

这个是不是一个事件?
我应该怎样分析出的它的含义...?
大家帮帮忙..


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 230
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
006A1131    68 70C16C00     push asktao.006CC170                 ; ASCII "xx_kk"
006A1136    8D4C24 24       lea ecx,dword ptr ss:[esp+24]
006A113A    8BD8            mov ebx,eax
006A113C    FF15 58136C00   call dword ptr ds:[<&MSVCP80.std::ba>; msvcp80.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >

类似这样的代码 应该怎么分析?
2009-6-9 10:49
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是调用了STL的函数
2009-6-9 11:01
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
不是,模板实例化的结果
就是string::data
2009-6-9 17:07
0
雪    币: 230
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
 谢谢 ..这个函数不像函数 不好理解
2009-6-9 21:13
0
雪    币: 230
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
请问如何分析出它的意思?
2009-6-9 21:54
0
雪    币: 230
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
给个明灯..
2009-6-9 21:56
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >

首先是最外层:
std::basic_string<X,Y,Z >::basic_string<X,Y,Z >
其中:
X = char
Y = std::char_traits<char>
Z = std::allocator<char>

std是STL的 namespace
显然这个是在调用 basic_string<X,Y,Z >的构造函数

这里
Y,Z是X确定定后basic_string的默认模版参数,
所以实际就是
basic_string<char>

这个正是 string

所以这里是调用
string("xx_kk")
2009-6-10 20:52
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
9
iicup已经解释得很清楚了。

我再多几句嘴,如果你不习惯C++的STL编程方式,别人用某个例子就事论事地讲,你也很难明白。“逆向”的的前提,至少是知道“正向”是如何工作的吧。

简单(但不严格)地说,std::basic_string<char>就是STL提供的的字符串,即std::string

而std::basic_string<char,std::char_traits<char>,std::allocator<char> >就是std::basic_string<char>的缺省模板参数展开形式。

std::basic_string<char,std::char_traits<char>,std::allocator<char> >::data写成简单的形式就是std::string::data

msvcp80.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >这个函数其实就是字符串的构造函数,可以理解为:std::string::string(const char *)

如果要深究string类中的data成员为何物,就需要研究STL源码了。可以去看侯俊杰《STL源码分析》。
2009-6-10 21:38
0
雪    币: 230
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
真的很感谢 iicup与书呆彭 的回答..
让我不再迷糊..真的很谢谢.
2009-6-11 16:17
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
同样受教……支持下!
2009-9-16 16:58
0
雪    币: 215
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢解惑...............
2009-12-29 14:43
0
游客
登录 | 注册 方可回帖
返回
//