首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
VC/MFC
基础类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
宽字符std::wstring的长度和大小问题?sizeof()和length()
[已结贴,结贴人:anuosix]
加为好友
发送私信
在线聊天
anuosix
等级:
发表于:
2008-05-19 00:10:10
楼主
std::wstring ws=L"kkkk";
int il=ws.length();
int ia=sizeof(ws);
int ib=sizeof("dddd");
int ic=sizeof(L"kkkk");
输出为
il=4,ia=32,ib=5,ic=10
为什么ia=32 ?
wstring到底对L"kkkk"做了什么?
问题点数:
20
回复次数:
8
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Mackz
在相互
等级:
发表于:
2008-05-19 01:06:48
1
楼 得分:
15
sizeof是用于获取变量所占内存的大小;wstring作为一个类,除了存储字符串本身,还有虚函数表和其他成员等也是占有内存的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
anuosix
等级:
发表于:
2008-05-19 03:25:38
2
楼 得分:
0
当ws串很大的时候,ia仍然是32,这么说,他存储的是这个类结构的大小,那么这个类是如何存储字符串的呢,雷机构是怎么样的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
nevergone
做最好的自己
等级:
发表于:
2008-05-19 07:25:20
3
楼 得分:
5
你直接查看string类的源码不就OK了
wstring内部保存字符串指针
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
VisualEleven
Eleven
等级:
发表于:
2008-05-19 08:49:31
4
楼 得分:
0
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qilihechuncai
七里河蠢才
等级:
发表于:
2008-05-19 09:09:04
5
楼 得分:
0
好像是按照取最长的字符的原则。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bruce3227038
超级塞亚人
等级:
发表于:
2008-05-19 09:28:45
6
楼 得分:
0
一个k是占两个字节的,也就是4个k占8个字节,而它是字符串,是用"\n"结尾的,所以这个串是"kkkk\n",里面每个字符占2个字节,总共5*2=10个字节了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Mackz
在相互
等级:
发表于:
2008-05-19 09:36:17
7
楼 得分:
0
引用 2 楼 anuosix 的回复:
当ws串很大的时候,ia仍然是32,这么说,他存储的是这个类结构的大小,那么这个类是如何存储字符串的呢,雷机构是怎么样的
类里面只会保存字符串的指针,所以字符串多大与类对象的大小无关。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qingdou
等级:
发表于:
2008-05-19 10:54:01
8
楼 得分:
0
好诡异啊,我用win32 application建了个工程,编译结果报错:
error LNK2001: unresolved external symbol _WinMain@16
如果改win32 console application建工程,编译结果则报错:
error LNK2001: unresolved external symbol _Main
为什么呢??……
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友