C++中String 的长度大小有限制吗?
如题,谢谢! 问题点数:0、回复次数:11Top
1 楼fangrk(加把油,伙计!)回复于 2003-08-04 09:50:08 得分 0
#include <iostream>
#include <string>
#include <limits>
using namespace std;
int main()
{
cout<<numeric_limits<string::size_type>::max()<<endl;
}
C:\temp>bcc32 -WR -WC a
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
a.cpp:
Turbo Incremental Link 5.64 Copyright (c) 1997-2002 Borland
C:\temp>a
4294967295
C:\temp>Top
2 楼yjh1982(血精灵)回复于 2003-08-04 09:59:10 得分 0
有!看你的内存多大了Top
3 楼zgzjw(object)回复于 2003-08-05 15:21:48 得分 0
要看虚拟内存有多大了Top
4 楼snowman_pc(cpp)回复于 2003-08-05 16:07:46 得分 0
我记得在一本书上看过,
C++本身没有规定字符串的长度,
Top
5 楼wangshewei(wangshewei)回复于 2003-08-05 16:35:20 得分 0
为什么不编写一个程序试一试?
#include <iostream>
#inclued <string>
int main()
{
string str="a";
try
{
for (int i=1;i<1000;i++)
{
str=str+"a";
cout<<str<<endl;
}
}
catch(...)
{
cout<<"come to the end!"<<endl;
}
return(0);
}
备注:因为手头没有C++编译器,所以以上程序没有经过调试。但是我想基本编程思路应该如此。Top
6 楼wangshewei(wangshewei)回复于 2003-08-05 16:37:08 得分 0
不好意思,好像漏写了:using namespace std;Top
7 楼Jinbj(指来指去的指针)回复于 2003-08-07 17:24:31 得分 0
using namespace std;
我想知道这句话到底什么意思Top
8 楼villager(在黑暗的角落 忧郁的眼神注视着你)回复于 2003-08-07 17:56:20 得分 0
using namespace std;
使用标准名字空间
C++标准库那么大,免不了有时候里面的函数名或变量名跟你写的程序里的重名,名字起的一样那还不出乱子?所以标准库里的数据都定义在标准名字空间里面,跟你的程序里的变量名隔离开来。就是这个样子Top
9 楼chon81(当我遇上你…)回复于 2003-08-07 18:01:27 得分 0
我想在保护模式下,可能没什么
在实模式下,可能不能超出段.Top
10 楼merlinran(天行者)回复于 2003-08-07 18:51:46 得分 0
string本身提供了一个成员函数叫max_size,返回的是它所允许的最大序列的长度。
标准库的容器都提供了这么一个成员。
fangrk(加把油,伙计!):
你的做法是不正确的,即使偶然正确,也只是碰运气而已。你取的是其size_type所能表达的最大值。
Top
11 楼hansen1998(烟雨鹤)回复于 2003-08-07 19:34:41 得分 0
当你定义一个string对象时并初始化它时,C++编译器会为它分配一个定量的空间,随着string对象中数据的增加,当这个一定量的空间不够时,编译器会为它再增加一倍的空间。这是一种动态的内存分配,因此一般string是没有长度限制的。当然,除非你的内存耗尽,那就另当别论了。Top




