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

我用sizeof(str) 得到str占32个字节。我不知道,字节和字符的换算,那位高手可以告诉我,最好是C++的。

字节和字符的换算和编码有关.
如果你的编码是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的结果是不一样的.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-17
基本上你可以认为string里面可以存无限长的字符串

这个跟sizeof(string)的值毫无关系追问

大哥,看您这个厉害,可以留一下QQ号么
我想和您交流下C++的这方面知识,最近都学到半夜2点多

追答

我不用qq的, 有事就在这给我发消息吧

追问

好的,非常感谢您的帮助

第2个回答  2011-10-17
8个追问

您这个8个,是一个字节可以有8个字符,如“aaaaaaaa”
或者说呢我用ifstream file();打开个文件txt的文件,这个txt文件可能很大
我用for(string str ;getline(file,str);i++)
这句话我可不可以这么理解,把file文件(该文件可能非常大)的字符串赋给str,一共赋给str32个字节个字符串(想问是多少个字符),如果超出str的个数,i++ 继续重新将file中的字符串赋值给str??

相似回答