强制转换就可以了吧。这是MSDN对size_type的定义:basic_string::size_type:An unsigned integer type that can represent the number of elements and indices in a string.可见size_type实际上就是一个无符号整型(unsigned int)。
这个事实表明size_type存储的string长度是int所能存储的两倍。 使用int变量的另一个问题是,有些机器上int变量的表示范围太小,甚至无法存储实际并不长的string对象。如在有 16 位int型的机器上,int类型变量最大只能表示 32767 个字符的string对象。而能容纳一个文件内容的string对象轻易就会超过这个数字。因此,为了避...
在使用STL中表明容器长度的时候,我们一般用size_type。 2. string::size_type 类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别; size_t一般也是unsigned int 3. size_t 使用的时候头文件需要 <cstddef> ;size_type 使用的时候需要<string>或者<vector> 4. 下述长度均相等,...
假如,你是用 string s; int rc = s.find(...); 然后判断,if ( rc == string::npos ) 这样在不同的机器平台上表现就不一样了。如果,你的平台的string::size_type的长度正好和int相匹配,那么这个判断会侥幸正确。但换成另外的平台,有可能 string::size_type的类型是64位长度的,那么判断就完全不正确了。
在string::size_type中定义与负数进行运算时自动转化为signed,而unsigned没有这个功能.当没有和附属比较时,因为无法转化为signed型,导致出错
C++ string::size_type类型【转】 1 int main()2 {3 string str("Hello World!\n");4 cout 02 #include 03 04 int main()05 {06size_t indexs = -1;07size_t ps = 100;08 i... string类 数据类型 字符串 编译器 无符号整数 转载 ...
Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,从 ...
size_type是unsigned类型,表示容器中元素长度或者下标,vector<int>::size_type i = 0; (4) difference_type signed int difference_type是signed类型,表示迭代器差距,vector<int>:: difference_type = iter1-iter2. 前二者位于标准类库std内,后二者专为STL对象所拥有。
应该是出现警告,即warning,而不是错误error.C,C++在有符号数和无符号数之间的运算时,会先把数都转成无符号数,再运算,因此,如果i=-1,那么转成无符号数就是0xFFFFFFFF,就会出现-1>2这样的情况,所以VC对这种情况会有warning,提醒你注意.
最好不要。容器的size_type为了能表示足够大的范围大多都是unsigned类型的整数,在unsigned整型变量与signed整型做算术和逻辑运算时,signed变量会自动转换成unsigned变量,所以会产生一些难以预料的结果。比如:int n = -1;if (n < ivec.size())cout << "n is smaller";else cout << "n is ...