文档库 最新最全的文档下载
当前位置:文档库 › 字符串数组

字符串数组

字符串数组
字符串数组

串和数组

一、填空题

1. 设字符串S1=“ABCDEF”,S2=“PQRS”,则运算S=CONCA T(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2)的结果为S=_________________。

2. 判断两个字符串相等的充要条件是____________________________。

3. 下列程序段实现子串t 在主串s 中位置的算法,要求在下划线处填上正确语句。 int index(char s[ ], char t[ ])

{

i=j=0;

while(i

if(s[i]==t[j]){i=i+l; j=j+l;}else{i=_______; j=______;}

if (j==strlen(t))return(i-strlen(t));else return (-1);

}

4. 设二维数组A 有m 行n 列,每个数组元素占L 个字节的存储单元,按行的顺序存放在m*n 个连续的存储单元中。已知A[0][0]的地址为1000,则A[i][j]的地址为______________________________________。

5. 设三维数组A[3][4][5]中的每个元素占10个字节的存储单元,按行的顺序存放在一组连续的存储空间中。已知A[0][0][0]的首地址为1000,则数组元素A[1][2][3]的首地址为___________________________。

6. 设对称矩阵A 有n 行n 列,每个数组元素占L 个字节的存储单元,按行的顺序将下三角矩阵中的元素(包括对角线上的元素)存放在n*(n+1)/2个存储单元中,已知A[0][0]的地址为1000,则A[i][j](i>=j )的地址为___________________________。

7. 设有n 行n 列的三对角矩阵A ,每个数组元素占L 个字节的存储单元,按照从上到下从左到右的顺序将三条对角线上的元素存放在3n-2个连续的存储单元中,已知A[0][0]的地址为1000,则三对角线上元素A[i][j]的地址为_________________。

8. 已知稀疏矩阵A=???

???????????-0000

5100

00030200,则A 的三元组表为__________________。

字符串可以用字符数组与字符串变量两种方式来存储

字符串可以用字符数组与字符串变量两种方式来存储,效果类似。 一、用字符数组来存储字符串: char st1[100],st2[100] ; //字符数组说明 cin>>st1>>st2; long a,b; 输入:hello, world 则st1={…h?,?e?,?l?,?l?,?o?,?,?,?\0?} st2={…w?,?o?,?r?,?l?,?d?,?\0} 字符?\0?为字符串结束标志 1. 字符数组长度 strlen(st1); //如a=strlen(st1);b=strlen(st2); 则a=6,b=5 2. 字符数组比较 不能直接比较,st1>st2是错误的,要用strcmp()函数 strcmp(st1,st2); //st1=st2相等则输出0,st1st2输出1 strncmp(st1,st2,n); 把st1,st2的前n个进行比较。 3. 连接字符数组 不能直接用st1=st1+st2;用strcat()函数 strcat(st1,st2); //将st1和st2连接后赋给st1,本例连接后st1为”hello,world” strncat(st1,st2,n); n表示连接上st2的前n个给st1,在最后不要加'\0'。 4. 替换 strcpy(st1,st2); //用st2的值替换st1的值,字符数组不能如此赋值st1=st2或st1[]=st2[]都是错误的 本例中st1值被替代为”world” strncpy(st1,st2,n); n表示复制st2的前n个给st1,在最后要加'\0'。 5. 其他函数 strchr(st1,ch) //ch为要找的字符。如strchr(st1,?e?);会截取出st1中以字母?e?开头的字符串,要用string类型的来存储,如string c1; c1=strchr(st1,?e?); 则c1为”ello” strspn(st1,st2); //返回st1起始部分匹配st2中任意字符的字符数。本例 中”hello,”中的第一个字符?h?不能在”world”中找到匹配字符,因此返回值为0。如st1=”rose”;st2=”worse”;则返回值为4,因为rose在worse中都能找到匹配字符。 strrev(); //颠倒字符串 二、用字符串来存储字符串 string str1,str2; cin>>str1>>str2; //如输入“hello, world”则str1=”hello,” str2=”world” 可直接赋值: str1=str2; 1. 字符串长度 len = str1.length(); 2. 字符串比较 可以直接比较,即str1>str2;str1==str2;等 3. 连接 可以直接连接,即str1 += str2;等

C++中字符数组与string的相互转换及字符串拼接(字符串知识点总结)

【字符数组转化成string类型】 Char ch[]=”ABCDEFG” String str(ch);//也可string str=ch; 或者 Char ch[]=”ABCDEFG” String str; Str=ch;//在原有基础上添加可以用str+=ch; 【string类型转换为字符数组】 Char buf[10] String str(“ABCDEFG”); Length=str.copy(buf,9); Buf[length]=’\0’; 或者 Char buf[10]; String str1(“ABCDEFG”); strcpy(buf,str1.c_str());//strncpy(buf,str1.c_str(),10); 【字符串拼接】 一、string类字符串 重点:函数append的用法: (1)向s1-string的后面加s2-string (1个参数)

s.append(s2); 或s1+=s2; 也可直接将字符串拼接:如 string s=“hello”; s.append(" world");//“hello"后面拼接”world" (2)(2个参数) 1.向s1-string的后面加s2-string的一部分 s1.append(s2,n); // 把字符串s2的前n个字符连接到当前字符串结尾 2.向string后面加多个字符 string s1 = "hello "; s1.append(4,’!’); //在当前字符串结尾添加4个字符! s1 = “hello !!!”; (3).向string的后面加string的一部分(3个参数) 1.string s1 = "hello ", s2 = "beautiful world "; s1.append(s2, 11, 5); //把字符串s2中从11开始的5个字符连接到当前字符串的结尾得s1 = “hello world”; 2.string s1 = "hello ", s2 = “beautiful world”; s1.append(s2.begin()+11, s2.end()); //把s2的迭代器begin()+11和end()之间的部分连接到当前字符串的结尾得“hello world”; 二、char数组类字符串 重点:strcat()函数,该函数接受两个字符串作为参数,该函数把第2个字符串

c语言字符数组与字符串总结

字符数组与字符串 <1>定义 Char数组名[常量表达式] 数组中每一个元素的值为一个字符。 系统在内存为字符数组分配若干连续的存储单元,每个储存单元为一个字节。 <2>初始化 逐个元素初始化,如char c[8]={‘b’,’o’,’y’};(要记得加单引号) 用字符串初始化,如char c[11]={“I am a boy”};初始化后在末尾自动添加’0’ 如果初值个数<数组长度,则只将这些字符赋给数组中前面元素,其余元素自动定为空字符(即’0’) <3>输入输出 ①用格式”%c”逐个输入输出,如scanf(“%c”,&a[0]); ②用格式符”%s”整个字符串输入输出,如scanf(“%s”,a) 用”%s”格式输出字符数组时,遇’\0’结束输出,且输出字符中不含’\0’,用scanf及”%s”输入时,数组名前不能再加”&”符号。 字符串的末尾必须有’\0’字符,且字符串只能存放在字符数组中。 scanf中%s输入时遇空格或回车结束。 ③用函数gets实现输入 gets(字符数组),如gets(a) 调用函数时,回车键作为输入结束标志;然后将接收到的字符依

次赋给数组各个元素,并自动在字符串末尾加字符串结束标记’\0’ ④用字符串输出函数puts实现输出 puts(字符串/字符数组),如puts(a); 输出一个字符串,并在输出后自动换行。 <4>字符串处理函数 ①字符串拷贝函数 格式strcpy(字符数组1,字符串2) 将字符串2拷贝到字符数组1中去,要求字符数组1必须足够大,拷贝时’\0’一同拷贝,不能使用赋值语句为一个字符数组赋值。字符数组1应写成数组名的形式,比如char a[0]; strcpy(a,…) ②字符串连接函数 格式strcat(字符数组1,字符数组2) 将字符数组2连到字符数组1后面,要求字符数组1必须足够大,连接前,两串均以’\0’结束;连接后,串1的’0’取消,新串最后加’\0’。 ③计算字符串长度的函数 strlen(字符数组); 求出字符串或字符数组中实际字符个数,不包括’\0’,并且遇到’\0’结束。 ④字符串比较函数 格式strcmp(字符数组1,字符数组2)

20-字符数组与字符串类型.

字符数组与字符串类型 字符型变量:VAR CH :CHAR ; 一、字符数组:数组基类型(元素的类型为字符型。 VAR A:ARRAY [ 1. . N ] OF CHAR ; 输入、输出也与普通数组一样,只能用循环结构,逐个元素地给它赋值,即: FOR I:= 1 TO N DO READ(A[ I ] ; 或者: A[I]:=‘ X ’ ; 不能用:A :=‘ IT IS A PEN ’ ; 例一:判断从键盘输入的字符串是否为回文(从左到右和从右到左读一串字符的值是一样的, 如 ABCDCBA , 1234321, 11, 1 ,串长 < 100 ,且以点号‘. ’结束。 2000年竞赛题:判断一个数是否为回文数。 VAR LETTER:ARRAY [ 1. . 100 ] OF CHAR ; I, J :0. . 100 ; CH:CHAR ; BEGIN WRITELN(‘ INPUT A STRING :’ ; I := O ; READ (CH ; WHILE CH < > ‘. ’ DO BEGIN

I:=I+1 ; LETTER[ I ] := CH ; READ (CH ; END ; J :=1 ; { I 指向数组的尾部, J 指向数组的头部 ,逐个比较 } WHILE (J < I AND (LETTER[ J ]= LETTER[ I ] DO BEGIN I:= I – 1 ; J :=J + 1 END ; IF J > = I THEN WRITELN(‘ YES ’ ELSE WRITELN(‘ NO ’ ; END . 二、字符串类型:针对 TURBO PASCAL 1、字符串常量:CONST STR=‘ THIS IS A BOOK。’ ; 我们经常在 WRITE 语句中用到字符串,也可以 WRITE (STR ;语句输出 STR 的值。 2、字符串类型:也是一种构造类型。 定义形式:TYPE 字符串类型名 = STRING[ N ];

实验9 字符串和数组

实验9 字符串和数组 3.1实验目的 1.理解并掌握String类、StringBuffer类; 2.掌握字符串与其他数据类型的转换; 3.掌握Java Application命令行参数的使用; 4.熟练掌握一维数组和二维数组的使用; 5.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题。 3.2实验内容 1.利用下面的关键代码编写一个完整的程序,理解String类的使用。 String s=new String("This is an demo of the String method."); //String s="This is an demo of the String method."; System.out.println("Length: "+s.length()); System.out.println("SubString: "+s.substring(11,15)); 代码如下: public class Test1 { public static void main(String[]args){ String s=new String("This is an ddemo of the String method."); System.out.println("length:"+s.length()); System.out.println("SubString:"+s.substring(11,15)); } } 2.利用下面的关键代码编写一个完整的程序,理解StringBuffer类的使用。 StringBuffer sb=new StringBuffer("Hello World!"); sb.append(" Hello Java!"); sb.insert(12," And"); System.out.println(sb); System.out.println(sb.charAt(0)); sb.setCharAt(0,''h''); System.out.println(sb.charAt(0)); System.out.println(sb); 代码如下: public class Test2 { public static void main(String[]args){ StringBuffer sb=new StringBuffer("Hello World!");

字符数组和字符串的sizeof( )和strlen()

目录 一、数组或字符串的长度 1、sizeof()---求所占的字节数 (1)、对于整型字符型数组 (2)、对于整型或字符型指针 2、strlen()---字符数组或字符串所占的字节数 (1)、针对字符数组 (2)、针对字符指针 3、sizeof()与strlen()区别 4、c++中的字符串string的长度 一、数组或字符串的长度 1、sizeof()---求所占的字节数 (1)、对于整型字符型数组 int A[]={1,4,5,2,8,6,0}; //求整型数组A所占的字节数 int i=sizeof(A); //i表示整型数组A所占的总空间的字节数 cout<<” i=sizeof(A)= ”<

C语言中字符变量字符串和字符数组应用

C语言中字符变量字符串和字符数组应用 字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错误发生的成分?一?注意区别字符数组中的字符和字符串C语言中无字符串变量,但提供了字符数组character arrary) 用于存储字符串,例如: char str[]="Hello"; 同时,字符数组亦用于存储字符或字符变量,例如: /*存放字符例*/ char Chars[]={`H``e`,`1``1`,`o`}; /*存放字符变量例*/ char ch=getch(); char CharVar[]=ch; str和Chars的内容尽管由相同字母构成,但前者是字符串(str)后者为一列字符(Chars)?两者在内存中的结构不同,即字符串结尾有NULL 0(字符串终止符)?在应用编程实践中,常常需要从键盘获取字符,依次存入字符数组中,再以字符串输出函数输出到屏幕等,譬如,在中文环境?图形模式下中文字符的键盘输入和屏幕显示?如混淆字符数组中字符组与字符串的差别,则可能得到奇怪的结果?如例: CharStr() { int i,CharNum=5; unsigned char str[80]; for(i=0;i

字符串和字符数组之间的转换

字符串和字符数组之间的转换 2010-11-02 16:53:00| 分类: |举报|字号订阅 字符串类提供了一个void ToCharArray() 方法,该方法可以实现字符串到字符数组的转换。如下例: private void TestStringChars() { string str = "mytest"; char[] chars = (); = ""; "Length of \"mytest\" is " + + "\n"); "Length of char array is " + + "\n"); "char[2] = " + chars[2] + "\n"); } 例中以对转换转换到的字符数组长度和它的一个元素进行了测试,结果如下: Length of "mytest" is 6 Length of char array is 6 char[2] = t 可以看出,结果完全正确,这说明转换成功。那么反过来,要把字符数组转换成字符串又该如何呢? 我们可以使用类的构造函数来解决这个问题。类有两个构造函数是通过字符数组来构造的,即 String(char[]) 和String[char[], int, int)。后者之所以多两个参数,是因为可以指定用字符数组中的哪一部分来构造字符串。而前者则是用字符数组的全部元素来构造字符串。我们以前者为例, 在 TestStringChars() 函数中输入如下语句: char[] tcs = {'t', 'e', 's', 't', ' ', 'm', 'e'}; string tstr = new String(tcs); "tstr = \"" + tstr + "\"\n"); 运行结果输入 tstr = "test me",测试说明转换成功。 实际上,我们在很多时候需要把字符串转换成字符数组只是为了得到该字符串中的某个字符。如果只是为了这个目的,那大可不必兴师动众的去进行转换,我们

c语言编程技巧如何定义一个字符串的数组

C语言编程技巧:如何定义一个字符串的数组 实现目的 我们在用C语言编写程序时,经常会遇到使用字符串数组的情况,这种数组的特点是,数组中的每个元素都是一个字符串,但每个字符串的长度却不相同。如果你使用C++语言进行编程的话,实现起来相对比较简单,只需直接选择标准模板库的字符串string类,在代码中定义该类的一个数组即可实现。现在的问题是,在纯C语言中如何定义这样的一个字符串数组呢? 如对于下面的一个字符串数组: str = { “I love C.”, “I love C++.”, “I love JA V A.”, “I love Python.”, “I love LabVIEW.” }

下面给出C语言中的两种定义方法。 方法1:定义一个char类型的二维数组 这种方法是通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度。如对于上面的数组,C语言的定义代码如下: 在取该数组的每个字符串时,直接对行索引即可。 方法2:定义一个指向char类型的指针数组 这种方法是通过定义一个指向char类型的指针数组实现,数组中的每个元素都是一个指针,通过该指针可得到数组中的每个字符串。如对于上面的数组,C语言的定义代码如下: 两种方法对比 上面的两种方法都可以实现我们的目的,但在内存的占用上两种方法不同。第1种方法定义了一个5行20列的二维数组,即每个字符串所占的字节长度都为20个,所以共需要占用100个字节,而第2种方法是定义的指针数组,每个指针指向的字符串占用的字节长度是其实际长度,所以其总的长度肯定小于100个字节。综合来讲,第1种方法相对于第2种方法,造成了存储空间的浪费情况。

第七章字符数组与指针练习题参考答案

第七章字符数组与字符串 【题7.29】下面是对s的初始化,其中不正确的是。 A)char s[5]={“abc”};B)char s[5]={‘a’,‘b’,‘c’}; C)char s[5]=“”;D)char s[5]=“abcdef”; 【题7.30】下面程序段的运行结果是。 char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’}; printf(“%s”,c); A)‘a’‘b’ B)ab C)ab c 【题7.31】对两个数组a和b进行如下初始化 char a[]=“ABCDEF”; char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是。 A)a与b数组完全相同B)a与b长度相同 C)a和b中都存放字符串D)a数组比b数组长度长 提示:‘\0’是字符串结束的标志 【题7.32】有两个字符数组a、b,则以下正确的输入格式是。 A)gets(a,b); B)scanf(“%s %s”,a,b); C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”); 【题7.33】有字符数组a[80]和b[80],则正确的输出形式是。 A)puts(a,b); B)printf(“%s %s”,a[],b[]); C)putchar(a,b); D)puts(a),puts(b); 【题7.34】下面程序段的运行结果是。 char a[7]=“abcdef”; char b[4]=“ABC”; strcpy(a,b); printf(“%c”,a[5]); A)空格B)\0 C)e D)f 提示:复制后a[0]=‘A’,a[1]=‘B’,a[2]=‘C’,a[3]=‘\0’, a[4]=‘e’,a[5]=‘f’, a[6]=‘\0’,

第四讲java数组和字符串

概述 什么是数组?除了基本数据类型,还提供一种导出类型:数组.数组是相同类型地数据按顺序组成地一种复合数据类型,通过数组名和下标,可以使用数组中地数据.下标从开始.数组是所有编程语言中常用地数据结构. 为什么要数组呢?我们来举一个例子.假设我们需要表示一个班个人地数学成绩,要求求出平均成绩.如果没有数组,我们需要用前面学过地声明变量地方法,声明个变量,写次加法运算!数组可以大大地简化类似地问题!我们只要声明一个长度为地整型数组,结合上一讲我们学过地循环语句,就可以很方便地解决这个问题! 在以前地编程语言比如或者中,字符串也使用数组来表示地:字符串是字符数组!所以字符串与数组有着天然地联系.但是在中,提供了一种更方便地表示字符串地方法:用一个类来表示.类是面向对象地语言特有地概念,对于初次接触面向对象技术地人来说,比较难理解.所以,这一讲,我们将学习表示字符串地类,也对类地使用有一个粗略地了解,作为下一讲详细学习类地准备. 需要指出地是,语言里地其他两种导出类型:结构体和共用体,在里已经被取消. 下面,我们来学习数组和字符串. 数组地声明、创建和初始化 数组地声明: 声明数组,包括声明数组地名字、数组包含地元素地数据类型.数组可以一维地,也可以是二维或者多维地.举例来说:一个班有个人,我们用一个长度为地一维数组表示;如果要表示每个同学地五门高考成绩,那我们就需要用一个第一维长度为,第二维长度为地二维数组. 声明一维数组有两种格式: 数组元素类型数组名[ ]; 数组元素类型[ ] 数组名; 比如:[ ]; 或者:[ ] ; 类似地,声明二维数组有两种格式: 数组元素类型数组名[ ][ ]; 数组元素类型[ ][ ] 数组名; 比如:[ ][ ]; 或者:[ ][ ] ; 下面,我们主要以一维数组为例,学习数组地用法. 数组地创建: 声明数组仅仅给出了数组名字和元素地数据类型,想要真正使用数组还必须为数组分配内存空间,也就是创建数组.在为数组分配内存空间时必须指明数组地长度.为数组分配内存空间地格式如下: 数组名数组元素地类型[ 数组地长度] 例如:[]; [] []; 事实上,数组地声明和创建可以一起完成,比如: [ ] []; 一旦数组被创建,数组地大小就不能改变.如果在程序运行期间,需要对数组地大小进行扩展,通常需要使用另一种数据对象:.有关向量和扩展数组,有兴趣地同学可以在帮助中查找地帮助.

(实验四)符数组与字符串

实验四字符数组与字符串 一、实验目的 ●了解并掌握一维数组与二维数组的定义方法 ●了解并掌握一维数组与二维数组的初始化方法及元素的引用方法 ●了解并掌握字符串、字符串数组以及字符串函数的使用方法 二、实验环境 ●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以 上硬盘剩余空间。 ●Windows2000、Windows XP或Win 7操作系统 ●Code::Blocks(版本12.11或近似版本,英文版) 三、实验内容 1. 冒泡排序 编写程序,实现如下功能:从键盘上输入整数n(n<=100),再输入n个整数,以冒泡排序算法将n个整数按从小到大的顺序进行排序。 /*example-14.c*/ #include "stdio.h" int main() { int num[100], n, i, j, t; /*输入整数的数量n*/ printf("Input n(<=100):"); scanf("%d", &n); /*输入n个整数*/ printf("Input %d numbers:\n", n); for(i=0; i

/*输出排序后的数据*/ printf("After sorting:\n"); for(i=0; i

c语言中的字符数组与字符串

c语言中的字符数组与字符串 一、字符数组的定义 一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。char str[20]; 二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。 char country[10][20]; country[i]:第i个字符串 二.字符数组的初始化 字符数组的初始化. 1.可以通过为每个数组元素指定初值字符来实现。 char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; char str[ ]={"I am happy"}; 可以省略花括号,如下所示 char str[ ]="I am happy"; char country[10][20]={“china”,”japanese”,……}; 注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的 char str[15]; str="I am happy"; strcpy(str, "I am happy"); 不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。 ‘a’“a”区别 三、字符数组的引用 字符数组的逐个字符引用,与引用数值数组元素类似。 (1)字符数组的输入 除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。 例如: char str[10]; …… for(i=0; i<10; i++) { scanf(\"%c\", &str); fflush(stdin); /*清除键盘输入缓冲区*/ }

字符串和字符数组之间的转换

字符串和字符数组之间地转换 分类:工具举报字号订阅 字符串类提供了一个 () 方法,该方法可以实现字符串到字符数组地转换.如下例: () { ""; [] (); ""; (" \"\" ""\"); (" ""\"); ("[] "[] "\"); } b5E2R。 例中以对转换转换到地字符数组长度和它地一个元素进行了测试,结果如下: "" [] 可以看出,结果完全正确,这说明转换成功.那么反过来,要把字符数组转换成字符串又该如何呢?我们可以使用类地构造函数来解决这个问题.类有两 个构造函数是通过字符数组来构造地,即 ([]) 和[[], , ).后者之所以多两个参数,是因为可以指定用字符数组中地哪一部分来构造字符串.而前者则是用字符数组地全部元素来构造字符串.我们以前者为例,在 () 函数中输入如下语句: p1Ean。 [] {'', '', '', '', ' ', '', ''}; (); (" \"" "\"\");DXDiT。 运行结果输入" ",测试说明转换成功.实际上,我们在很多时候需要把 字符串转换成字符数组只是为了得到该字符串中地某个字符.如果只是为了这个目地,那大可不必兴师动众地去进行转换,我们只需要使用地 [] 运算符就可 以达到目地.请看下例,再在() 函数中加入如如下语名:RTCrp。 []; ("\"" "\"[] "()); 正确地输出是 " "[] ,经测试,输出正确.

. 字符串和字节数组之间地转换 如果还想从类中找到方法进行字符串和字节数组之间地转换,恐怕你会失望了.为了进行这样地转换,我们不得不借助另一个类:.该类提供了 [] () 方法将字符串转换成字节数组,还提供了([]) 方法将字节数组转换成字符串.5PCzV。类似乎没有可用地构造函数,但我们可以找到几个默认地,即 (获取系统地当前代码页地编码)、(获取位字符集地编码)、(获取采用字节顺序地格式地编码)、(获取格式地编码)、(获取格式地编码) 等.这里主要说说和用于转换地区别.jLBHr。 在字符串转换到字节数组地过程中,会将每个单字节字符,如半角英文,转换成个字节,而把每个双字节字符,如汉字,转换成个字节.而则会将它们都转换成两个字节.我们可以通过下列简单地了解一下转换地方法,以及使 用和地区别:xHAQX。 () { "语言"; [] (); [] (); "", ""; ( ) { ("") " "; } ( ) { ("") " "; } ""; (" ""\"); ( "\"); (" ""\"); ( "\"); } LDAYt。 运行结果如下,不说详述,相信大家已经明白了.

数组与字符串之间的转换

一、前言 数据类型转换在编程中经常用到,VB6提供了一整套类型转换的函数。但是,在进行类型转换时,有时候仅仅依靠VB提供的函数是不能达到自己的目的的。因此,需要考虑用其他的方法来完成数据类型转换。本文仅谈VB6中字节数组和字符串的相互转换过程中应注意的问题及其解决办法。 在Visual Basic中使用Byte数组主要是为了32位API函数的参数传递和函数的返回。在32位的Visual Basic版本中,字符串被假定为Unicode字符,其中每个字符占用两个字节。系统自动地将Unicode的两个连续字节转换成1 个字节的ANSI字符。但是,如果该字符串包含二进制数据,其内容将变得很难理解。例如,一个汉字是两个字节,在Visual Basic 6.0中的长度就只是1,这将给我们计算单个汉字的国标码带来一些麻烦。有了Byte数组,这些问题就将迎刃而解。 另外,Visual Basic中的字符串和C语言中的字符串有一些不同,本文将给出一个函数,把C字符串转换成Visual Basic字符串。 二、用Byte数组代替字符串 Byte数组包含的是0-255之间的ASCII码字符,它不会象字符串那样被系统作预处理。你可以在很多API函数中用来Byte数组代替字符串。 例如,下面的代码中用GetSystemDirectory这个Windows API函数来取得Windows的系统路径。一共有两段代码,一段代码是传递一个字符串来存储函数返回的系统路径,另一段代码是传递一个Byte数组来代替字符串。 为了更好地比较,两段代码的不同部分都用黑体标出。读者可以仔细比较这两段代码的差异,这样您会更深入地理解Byte数组和字符串的差别。 把这两段代码的任何一段放入一个窗体中运行,但击窗体的空白区域,你将会在窗体中看到Windows的系统路径。 下面是使用字符串的代码: Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Form_Click() Dim n As Integer Dim str As String str = Space$(256) n = GetSystemDirectory(str, 256)

C,C++字符串和字符数组的本质

1、常量字符串 在代码里直接出现的”abcdef”这种字符串,在程序执行的时候,系统会将它们放在常量区,所谓常量区就是一直存在的,只读的,不可更改的数据区域,并且一个字符串只会有一份。假设你在程序里有两行代码 char* p1 = “agcd” ; char* p2 = “agcd” ; 无论你这两个行代码隔了多远,如果你想知道p1和p2所指向的字符串在内存中是不是同一个,那答案是肯定的,p1和p2的值完全一样。”agcd”这是一个存在于内存中的常量字符串,它从程序一开始就在那里,一直到程序结束读不会改变。在内存中,”agcd”是以如下 ’\0’。在种字符串的名字叫“以空字符为结束标志的字符串”。 char* p1 = “agcd” ; 如果你这时候想改变第一个字符的值,用p[0] =’b’,系统会报一个错,常量字符不能更改。(这里为什么指针可以当数组用,下面再解释)。 2、字符数组 如果你定义一个char a[10],那么系统会“只分配”10个char这么长的内存区域,一个char是一个字节,那么系统会分配十个字节的内存控件,并且将这一片连续的内存空间的首地址赋值给a。也就是说“数组名的值是数组所在内存区域的首地址”换句话说“数组名是一个指针,指向数组第一个值的地址”。 如果你定义一个char a[] = “abcdefg”;这句代码就复杂点了。定义一个数组,数组长度未知,那么系统会根据等号后面的值来“初始化”这个数组,等号后面是什么?前面说过,它是一个常量字符串。在内存中占8个字节,7个字符加上一个结束标志。这时候在内存中就有两个”abcdefg”的字符串了,一个是常量区域的,另一个是根据前者复制了一份的。这句代码的意思就是复制一个常量区域的字符串,将复制后的字符串的首字母的地址赋值给a。也就是说,最后a所指向的内存区域,已经不是常量里的”abcdefg”了,这里为什么要复制一份呢?原因是因为常量是不允许更改的,而数组一般都意味着需要修改,所以就复制了一份数据,放在非常量区域,就可以更改了。下面的测试程序可证明上述结论:char* p1 = "abcdef" ; char* p2 = "abcdef" ; char a[]= "abcdef" ; unsigned long dwP1 = (unsigned long)p1 ; //32位系统里的指针就是4个字节的整数,这样可以具体查看指针的值。 unsigned long dwP2 = (unsigned long)p2 ; unsigned long dwA = (unsigned long)a ; printf("p1的值(32位地址) = 0x%X\n",dwP1); //%X是打印十六进制,X是大写,x是小写 printf("p2的值(32位地址) = 0x%X\n",dwP2); printf("a的值(32位地址) = 0x%X\n",dwA);

java数组与字符串

Ex3:数组和字符串 1、假设s1,s2,s3,s4是四个字符串,其值如下:(25分) String s1=“Welcome to Java” String s2=s1 String s3=new String(“welcome to java”); String s4=“welcome to java” 下面表达式的结果是什么? (1)s1= =s2; 结果:true (2)s2= =s2; 结果:true (3)s1.equal(s2); 结果:true (4)s2.equal(s3); 结果:false (5)https://www.wendangku.net/doc/d66083881.html,pareTo(s2); 结果:0 (6)https://www.wendangku.net/doc/d66083881.html,pareTo(s3); 结果:-32 (7)s1= =s4; 结果:false (8)s1.charAt(0); 结果:W (9)s1.indexof(…j?); 结果:11 (10)s1.indexof(“to”); 结果:8 (11)https://www.wendangku.net/doc/d66083881.html,stindexof(…a?); 结果:14 (12)https://www.wendangku.net/doc/d66083881.html,stindexof(“o”,15); 结果:9 (13)s1.length() 结果:15 (14)s1.substring(5) 结果:me to Java (15)s1.substring(5,11) 结果:me to J (16)s1.startwith(“wel”) 结果:false (17)s1.ednwith(“Java”) 结果:true (18)s1.toLowerCase() 结果:welcome to java (19)s1.toUpperCase() 结果:WELCOME TO JA V A (20)“Welcom”.trim() 结果:Welcome (21)s1.replace(…o?, …T?) 结果:WelcTme tT Java (22)s1.replaceAll(…o?, …T?) 结果:WelcTme tT Java (23)s1.replaceFirst(…o?, …T?) 结果:WelcTme to Java (24)s1.toCharArray() 结果:char []s1={…W?,?e?,?l?,?c?,?o?,?m?,?e?,?…,?t?,?o?, ……,?J?,?a;,?v?,?a?} 为了创建一个字符串“Welcome to Java”,可能会用到如下所示的语句: String s=”Welcome to Java”; 或者 String s=new String(“Welcome to Java”); 哪个语句更好?为什么? 解:第一个语句。因为字符串使用非常频繁第一种比较简化,而第二种比较繁琐。 2、假设s1和s2是两个字符串,下面哪些语句或表达式是错误的?(9分) (1)String s=new String(“new string”); (2)String s3=s1+s2; (3)String s3=s1-s2; (4)s1==s2; (5)s1>=s2;

将字符串转化为字符数组

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace数组与算法举例 { class Program { static void Main(string[] args) { string str1 = "fafaaf"; string str2; //字符串的复制,要用静态方法string.Copy(string source) str2 = string.Copy(str1); //将字符串转换为字符数组的方法1:str.CopyTo(int sourceindex, char[] destination, int destinationIndex, int count) char[] chaArr = {'a','2','3','4','5','6'}; str2.CopyTo(0, chaArr, 0, 6); Console.WriteLine(str2); foreach (char mychar in chaArr) { Console.Write(mychar); } Console.WriteLine(); //将字符串转换为字符数组的方法2:ToCharArray() char[] charArr2 = new char[6]; charArr2 = str2.ToCharArray(); foreach (char mychar1 in charArr2) { Console.Write(mychar1);

} Console.Read(); } } }

PASCAL 数组与字符串

第六章数组与字符串 6.1一维数组 6.2二维数组 6.3字符串 练习与作业 6.1一维数组 1、定义: var a:array[1..10]of integer; 其中:a是这一批数据的名称,称为数组名;array、of是定义数组的保留字;中括号中的数字是数据编号的下限和上限,财时也说明了数据的个数(上限-下限);最后一个是数据的基类型,如integer,char,real,boolean。 2、数组元素的输入: 数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要逐个数组元素读入,通常用循环结构来完成这一功能。下面是几个常用输入数组元素的例子: for i:=1to10do read(a[i]); {————从键盘读入数组元素的值;最常用的方法} for i:=1to10do a[i]:=i; {————数组元素a[1]到a[10]的值分别为1到10;数据赋初值} for i:=1to10do a[i]:=0; {————数组元素清0;最常用的数据初始化的方法} for i:=1to10do a[i]:=random(100); {————随机产生10个100以内的数,赋给各数组元素} 3、数组元素的输出: 和数组元素的输入相同,数组元素的输出也不能由一个write语句直接完成。同样要逐个数组元素输出。通常也用循环结构来完成这一功能: for i:=1to10do write(a[i],'');{————数组元素之间用空格分隔} writeln; 4、数组的应用: 例1:从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。program p1; var a:array[1..10]of integer; i,s:integer; begin for i:=1to10do read(a[i]); for i:=10downto1do write(a[i],''); writeln; s:=0; for i:=1to10do s:=s+a[i]; writeln('s=',s); end.

相关文档
相关文档 最新文档