C++ string::size_type类型

程序代码:

int main()

{

string str("Hello World!\n");

cout << "The size of " << str << "is " << str.size()

<< " characters, including the newline" << endl;

return 0;

}

从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或是无符号整数。但事实上,size 操作返回的是 string::size_type 类型的值。

   string 类类型和许多其他库类型都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关(machine-independent)。size_type 就是这些配套类型中的一种。它定义为与 unsigned 型(unsigned
int 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意 string 对象的长度。为了使用由 string 类型定义的 size_type 类型是由 string 类定义。任何存储string的size操作结果的变量必须为string::size_type 类型。特别重要的是,还要把size的返回值赋给一个 int 变量。

   虽然我们不知道 string::size_type 的确切类型,但可以知道它是 unsigned 型。对于任意一种给定的数据类型,它的 unsigned 型所能表示的最大正数值比对应的 signed 型要大一倍。这个事实表明 size_type 存储的 string 长度是 int 所能存储的两倍。

   使用 int 变量的另一个问题是,有些机器上 int 变量的表示范围太小,甚至无法存储实际并不长的 string 对象。如在有 16 位 int 型的机器上,int 类型变量最大只能表示 32767 个字符的 string 对象。而能容纳一个文件内容的 string 对象轻易就会超过这个数字。因此,为了避免溢出,保存一个 stirng 对象 size 的最安全的方法就是使用标准库类型 string::size_type。

   string str("some string");

for (string::size_type index = 0; index != str.size(); ++index)

cout << str[index] << endl;

时间: 2024-10-07 15:10:53

C++ string::size_type类型的相关文章

C语言 string::size_type类型

string::size_type类型 从逻辑上来讲,size()成员函数似乎应该返回整型数值,或如2.2节"建议"中所述的无符号整数.但事实上,size操作返回的是string::size_type类型的值.我们需要对这种类型做一些解释. string类类型和许多其他库类型都定义了一些伙伴类型(companion types).这些伙伴类型使得库类型的使用是机器无关的(machine-independent).size_type就是这些伙伴类型中的一种.它定义为与unsigned型(

C++ string::size_type 类型【转】

1 int main() 2 { 3 string str("Hello World!\n"); 4 cout << "The size of " << str << "is " << str.size() 5 << " characters, including the newline" << endl; 6 return 0; 7 } 从逻辑上来讲,s

string::size_type 页73 size_t 页90

异同点: size_t size_type sizeof(XXX)所得到的结果的类型就是 string类类型和vector类类型定义的类型,string的size操作返回来的是string::size_type类型,不可把string::size_type赋给int. 全局定义的类型,比如用在数组中,for循环中 STL类中定义的类型属性 sizeof(string::size_type) , sizeof(size_t) //size_t单独就行上述长度均相等,长度为win32:4 win64

size_t和size_type类型

size_t一般用来表示一种计数,比如有多少东西被拷贝等.例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小. 它的意义大致是“适于计量内存中可容纳的数据项目个数的无符号整数类型”.所以,它在数组下标和内存管理函数之类的地方广泛使用. size_t是全局定义的类型:size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 string::size_type 制类型一般就是unsigned int, 但是不同机器

Item 30 用enum代替int常量类型枚举,string常量类型枚举

1.用枚举类型替代int枚举类型和string枚举类型 public class Show { // Int枚举类型 // public static final int APPLE_FUJI = 0; // public static final int APPLE_PIPPIN = 1; // public static final int APPLE_GRANNY_SMITH = 2; public enum Apple { FUJI, PIPPIN, GRANNY_SMITH } pub

4.String字符串类型操作

String类型操作 1.set key value 设置key对应的值为string类型的value  2.mset key1 value1 … keyN valueN 一次设置多个key的值 3.mget key1 key2 … keyN 一次获取多个key的值  4.incr key 对key的值做加加操作,并返回新的值 5.incrby key integer 同incr,加指定值  注意:要求已有key的类型必须是整型数据 6.decr key 同上,但做的是减减操作 7.decrby

Redis系列 (二) String,List类型

一:String类型 string是二进制安全的(图片视频序列化存储,取出来还是可以用的)最多512M get key (拿出来)             set key(设key)             append key value(在原来基础上增加)             strlen key(长度)             setnx key value(存在时候不设置成功1,不成功0)            不成功                        成功      

JAVA中int、String的类型相互转换

int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i);这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? String -> int s="12345";int i;第一种方法:i=Integer.parseInt(s);第二种方法:i=Integer.valueOf(s).intValue();这两种方法有什么区别

关于var(string)++的类型自动转换

展示时间: var miao="50"; var fen="59"; var shi="00"; setInterval(fun, 1000); function fun(){ miao++;              //设置秒为string,但是运行++的时候,会先将miao转换成Number,再++:(下面fen,shi 同理) if(miao<10) { miao="0"+miao.toString(); } i