C++中定义一个sting str;想问str最多可以储存多少个字符

我用sizeof(str)得到str占32个字节。我不知道,字节和字符的换算,那位高手可以告诉我,最好是C++的。... 我用sizeof(str) 得到str占32个字节。我不知道,字节和字符的换算,那位高手可以告诉我,最好是C++的。 展开
 我来答
志远823
2011-10-17 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1183万
展开全部
字节和字符的换算和编码有关.
如果你的编码是Unicode, 则2个字节能表示一个字符, 比如A, 我.
如果编码是ASCII, 一个字节可以表示字母, 标点, 两个字节可以表示汉字.
一个字符串最长可以有多长呢? 首先要看你的计算机的表示能力, 如果是32位系统, 则最长可以表示: 2^32 = 4294967296个字符. 若是汉字的话, 则大约为2147483648, 21亿的样子, 所以可以认为是无穷大了.
若为64为系统, 则可以表示2^64 = 18446744073709551616.
很惊人吧!
你在申请内测的时候, 以最极限的方式来申请, 就可以获取最大的字符串, 比如
char *p = new char[4294967296].
此外在sizeof在使用的时候要需要注意下面的例子提出的情况.
void main()
{
char p1[255];
std::wcout << sizeof(p1) << std::endl; /// 数组的长度. 输出255字节

char* const p2 = new char[255];
std::wcout << sizeof(p2) << std::endl; /// 指针在内存的长度. 输出4字节
}
虽然本质上一样都是测量指针常量的长度,但sizeof的结果是不一样的.
vbtraz
2011-10-17 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4458万
展开全部
基本上你可以认为string里面可以存无限长的字符串

这个跟sizeof(string)的值毫无关系
更多追问追答
追问
大哥,看您这个厉害,可以留一下QQ号么
我想和您交流下C++的这方面知识,最近都学到半夜2点多
追答
我不用qq的, 有事就在这给我发消息吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q857968555
2011-10-17 · 超过16用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:68.5万
展开全部
8个
追问
您这个8个,是一个字节可以有8个字符,如“aaaaaaaa”
或者说呢我用ifstream file();打开个文件txt的文件,这个txt文件可能很大
我用for(string str ;getline(file,str);i++)
这句话我可不可以这么理解,把file文件(该文件可能非常大)的字符串赋给str,一共赋给str32个字节个字符串(想问是多少个字符),如果超出str的个数,i++ 继续重新将file中的字符串赋值给str??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式