社区
C++ 语言
帖子详情
string::size_type类型跟int类型有什么区别呢?
一朵浪花一神化
2009-07-18 01:28:40
如下代码:
for(string::size_type ix=0; ix!=str.size(); ix++)
我改成:
for(int ix=0; ix!=str.size(); ix++)
他们之间有什么区别呀,请各位大哥能给小弟解释下吗?
谢了```
...全文
313
10
打赏
收藏
string::size_type类型跟int类型有什么区别呢?
如下代码: for(string::size_type ix=0; ix!=str.size(); ix++) 我改成: for(int ix=0; ix!=str.size(); ix++) 他们之间有什么区别呀,请各位大哥能给小弟解释下吗? 谢了```
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljt3969636
2009-07-18
打赏
举报
回复
我觉得知道是正整数unsigned的就足够了,总之可以足够大不可以无限大,"一定范围"内能赋值给int long ..整数型
yangyunzhao
2009-07-18
打赏
举报
回复
1
string::size_type可以跨平台啊。他在每个平台上表现都一样,但是int型不确定。
windsting
2009-07-18
打赏
举报
回复
[Quote=引用楼主 yjfhv214 的回复:]
如下代码:
for(string::size_type ix=0; ix!=str.size(); ix++)
我改成:
for(int ix=0; ix!=str.size(); ix++)
他们之间有什么区别呀,请各位大哥能给小弟解释下吗?
[/Quote]
string::size_type 一般是 unsigned int,抛开前面大家说的不谈,
如果你的一个string里面的元素数量超过了该系统上的 INT_MAX(32位系统是 2147483647 ),
用后一种写法,当访问到第 2147483647 个元素的时候就会出问题,也可能不出问题,
具体情况你可以试试看。
lwlchristy
2009-07-18
打赏
举报
回复
[Quote=引用 6 楼 crazy_hand 的回复:]
这个应该是根据系统 size_type的,假如你现在的size_type unsigned,那么以后系统能够支持更大的数里,只要改下 typedef 这一句就够,如果你直接用int 你就需要把每一个用于迭代器的int 全都改一遍。
---
其实,就是方便维护,让语言变成的更抽象,不受任何的硬性限制。。
就像c++里面的容器,算法,全都是用基本语法抽象出来的(当然少不了函数模板 typedef 的功劳)
---
想想C++的容器,为什么可以让你指定容器的类型,而且多么复杂都可以。
--
这就是抽象的力量!!
[/Quote]
这个不错!是的,开始很多我也不明白为什么要用size_t,但看多了后面容器等就明白了!这应该也算是C++对C的一种改进吧!
Crazy_hand
2009-07-18
打赏
举报
回复
这个应该是根据系统 size_type的,假如你现在的size_type unsigned,那么以后系统能够支持更大的数里,只要改下 typedef 这一句就够,如果你直接用int 你就需要把每一个用于迭代器的int 全都改一遍。
---
其实,就是方便维护,让语言变成的更抽象,不受任何的硬性限制。。
就像c++里面的容器,算法,全都是用基本语法抽象出来的(当然少不了函数模板 typedef 的功劳)
---
想想C++的容器,为什么可以让你指定容器的类型,而且多么复杂都可以。
--
这就是抽象的力量!!
amossavez
2009-07-18
打赏
举报
回复
只是一个typedef,现在时一个unsigned int型,这么做也是为了升级做准备
猫已经找不回了
2009-07-18
打赏
举报
回复
int你超过32位的表示范围就会溢出,而string::size_type 则不会有这种问题。
老邓
2009-07-18
打赏
举报
回复
现在是int,可能在将来的将来会变成long long!
老邓
2009-07-18
打赏
举报
回复
string::size_type的主要作用是方便将来升级!
因为相应size的大小由string类内部决定,不需要用户操心了。
用户只管使用就行。
hrlhrl0
2009-07-18
打赏
举报
回复
我也不知道,搜的,string::size_type为unsigned类型
String
转
int
本套视频详细讲解了
String
如何转换成
int
,这在开发实践中会频繁遇到。
int
类型
需要从文本框录入,如学生身高,服务器接收到的是
String
类型
,使用时需要转换成
int
类型
。
类型
转换时需要使用到包装类的方法,8种基本
类型
都有对应的包装类。
C++学习(三)std::
string
::
size
_
type
size
_
type
是容器概念,没有容器不能使用。 由
string
类
类型
和vector类
类型
定义的
类型
,用以保存任意
string
对象或vector对象的长度,标准库
类型
将
size
_
type
定义为unsigned
类型
string
抽象意义是字符串,
size
()的抽象意义是字符串的尺寸,
string
::
size
_
type
抽象意义是尺寸单位
类型
string
::
size
_
type
它在不同的机器上...
string
::
size
_
type
类型
string
::
size
_
type
类型
从逻辑上来讲,
size
()成员函数似乎应该返回整型数值,或如2.2节“建议”中所述的无符号整数。但事实上,
size
操作返回的是
string
::
size
_
type
类型
的值。我们需要对这种
类型
做一些解释。
string
类
类型
和许多其他库
类型
都定义了一些伙伴
类型
(companion
type
s)。这些伙伴
类型
使得库
类型
的使用是机器无关的(machine
【c++】
string
::
size
_
type
string
::
size
_
type
在C++标准库
类型
string
,在调用
size
函数求解
string
对象时,返回值为
size
_
type
类型
,一种类似于unsigned
类型
的
int
数据。可以理解为一个与unsigned含义相同,且能足够大能存储任意
string
的
类型
。在C++ primer 中 提到 库
类型
一般定义了一些配套
类型
,通过配套
类型
,库
类型
就能与机器无关。我理解为 机器可以分为16位 32位64位等,如果利用
int
等内置
类型
,容易影响最后的结果,过大的数据可能丢失。
string
::
C++ 学习
string
::
size
_
type
第二次看C++ Primer,看到
string
类型
的时候,再一次注意到了
string
::
size
_
type
; 自己最早编写C++的时候,因为刚看过书,所以还比较注意,不把
size
_
type
和
int
混用,但是慢慢的,看过不少人编写的程序都是直接将
size
_
type
和
int
混用,这其实不好。比如下面的代码:
string
str("zhoajdsofjalsdfnnfdslnfdsklfn");...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章