不编译长字符串会怎么样
㈠ Delphi 字符串太长怎么办
不会啊,string字段长度不会存不下这些啊
类型 最大长度 占用内存
ShortString 255 2-256 向后兼容
AnsiString 大约2^31 4字节-2G 8位(ANSI)字符
WideString 大约2^30 4字节-2G 多用户服务和多语言程序
如果只简单地用 String 定义字符串,那么该字符串可能是短字符串也可能是 ANSI 长字符串,这取决于 $H 编译指令的值,$H+(缺省)代表长字符串(ANSIString 类型)。长字符串是 Delphi 库中控件使用的字符串。
你看看是不是编译指令问题
㈡ java常量字符串过长怎么解决
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE = 2^31 - 1 = 2147483647。又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。
不过这仅仅是对字符串变量而言,如果是字符串常量,如“abc”、”1234”之类写在代码中的字符串str,那么允许的最大长度取决于字符串在常量池中的存储大小,也就是字符串在class格式文件中的存储格式:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
u2是无符号的16位整数,因此理论上允许的string str的最大长度是2^16-1=65535。然而实际测试表明,允许的最大长度仅为65534,超过就编译错误。
㈢ C++如何输入不确定长度字符串数组,以下代码中a只有一个存储空间,为什么没有编译错误而且输出完全正确。
c/c++语言的设计初衷之一,就是尽量相信程序员,而不是给程序员太多的限制
所以哪怕就算是你的操作看上去有了明显的错误(例如数组越界),也会编译通过
所以说cin只看到a是char*类型,但是cin不负责检查到底a是指向多少位char
不确定长度也可以用标准库<string>头文件下面的string类型,c++建议用这个类型代替c风格字符串char*
㈣ string字符串长度限制
Java中的String有没有长度限制?
这个问题要分两个阶段看,分别是编译期和运行期。(ujiuye)不同的时期限制不一样:
1、编译期
String s = "";中,最多可以有65534个字符。如果超过这个个数。就会在编译期报错。
2、运行期
String长度的限制是编译期的限制,也就是使用String s= "";这种字面值方式定义的时候才会有的限制。那么。String在运行期有没有限制呢,答案是有的,就是我们前文提到的那个Integer.MAX_VALUE ,这个值约等于4G,在运行期,如果String的长度超过这个范围,就可能会抛出异常。(在jdk 1.9之前)String长度的限制是编译期的限制,也就是使用String s= "";这种字面值方式定义的时候才会有的限制。
字符串不能超过2G个字符
㈤ 什么是“字符型常量太长”c语言
字符只有一个字母在C语言中用 'a'单引号包含。
字符串可有很多个字符,用双引号包含。"abcdefgh"
如对字串比较可用库函数strcmp(char *s1,char *s2),而不能直接用==
而字符的比较可以
㈥ c语言 编辑距离算法 程序运行没问题 就是字符串长了会溢出 求修改
我用递归实现动态规划。
int fun (char*a,char*b)
{
if(strcmp(a,b)==0)return 0;
else
return min(fun(a+1,b),fun(a,b+1),fun(a+1,b+1));
}
因为是递归,可能浪费一些时间。不过可以参考动态规划中的“备忘录”方法,就是用数组记录已经算好的值。
思路和你类似。你试试看吧
㈦ 出现字符串变量对字串来说不够长请检查字符串定义是什么原因
那是因为你输入的字符个数超过了你首先定义的数组的大小,就好像你自己做了一个盒子,里面最多只能装10个球【就好比是a[10]】,结果你装了10个球后还往里面装,导致多余的球没地方放,在C语言编译的时候要开发一块内存来存放你输入的东西,而你没开发就放东西,所以编译器会报错;
例如:char a[10];
char占1个单元的内存空间,a[10]这个数组的定义就相当于开发出来了10个字节的内存来,这10个字节的内存只能存10个char型的数据,多余的就没地方存储,就导致了编译器报错!!!!
㈧ c语言中关于字符串长度的问题
不,若不在[]填数字,就必须在初始化这个str,在等号右边写具体数据,有几个数据,编译器就自动在[]中填几了。所以char str[]{0}这样写是错误的,要写成char str[]={'a','b','c'};这样的形式,编译器就会认为[]中是3了。另,char型数组还可以char str[]="1234567";这样来定义,但这时[]中并不是7而是8,原来编译器把str作为字符串对待了,要在7后自动加一个结束符'\0'。