字符串数据类型是一个有序的字符集合。
字符串变量的长度是集合中的字符数。
字符串类型的变量是动态的,因为它们的长度在仿真过程中可能会变化。
字符串中的单个字符变量的类型为byte。
Syntax:
string variable_name [= initial_value];
如果在声明中未指定初始值,则将变量初始化为" ",一个空字符串。空字符串的长度为零。下面是一个字符串数据类型的示例:
module datatype1; string s1 = "hello"; string s2 = "hello world"; string s3 = "helloworld"; // is ignored string s4, s5, s6; initial begin s4 = "later"; s5 = ""; //empty string s6 = {"hi", s5}; //concatenation #10; $display ("s1=%s s2=%s s3=%s s4=%s s5=%s s6=%s", s1, s2, s3, s4, s5, s6); #100 $fnish; end endmodule
在本例中,我们声明了6个字符串,从s1到s6。s1、s2和s3分别进行了初始化。其中字符串s3中的转义字符()被转义为空字符。
然后在“initial”语句块中,将s4赋值为字符串“later”,将s5赋值为空字符串,并连接s5与" hi ",赋值给字符串s6。下面是仿真log:
ncsim> run s1=hello s2=hello world s3=helloworld s4=later s5= s6=hi
String Operators
字符串数据类型还提供了处理字符串的操作符,如下表所示:
module datatype1; string s2 = "hello world"; string s3 = "helloworld"; string s4, s5; string s6 = "compare"; string s7 = "compare"; string s8; integer s2len, s3len, s2c; initial begin #10; $display ("s2=%s s3=%s",s2,s3); #100 $fnish; end initial begin #15; s2len = s2.len( ); $display("String Length s2 = %0d",s2len); s3len = s3.len( ); $display("String Length s3 = %0d",s3len); if (s2 == s3) $display("s2 = s3"); else $display("s2 != s3"); if (s6 == s7) $display("s6 = s7"); else $display("s6 != s7"); s4 = s2.substr(1,6); $display("s4 = %s",s4); s5 = "later "; s8 = {3{s5}}; $display("s8 = %s",s8); S2c = s2[0]; $display("s2c = %s",s2c); end endmodule
在上面的例子中,声明了字符串s2到s8并初始化为各种字符串。
将字符串长度(.len())赋值给整数类型s2len和s3len。
比较字符串s2和s3以及字符串s6和
s7。
提取s2的部分字符串并将其赋值给s4。
复制s5三次,赋值给s8。
下面是仿真的log:
s2=hello world s3=helloworld String Length s2 = 11 String Length s3 = 10 s2 != s3 s6 = s7 s4 = ello w s8 = later later later s2c = h $fnish at simulation time 110 V C S S i m u l a t i o n R e p o r t
String Methods
还有几种方法可用于处理字符串,如下表所示:
module sMethods; string s1 = "hello"; string s2 = "hello world"; string s4; string s5 = "GOODBYE"; byte x; integer s2len, s3len, i1, i2; initial begin #15; s2len = s2.len( ); $display("String Length s2 = %0d",s2len); s1.putc(0,"C"); //replace 0'th character with 'C' $display("String s1 = %s",s1); x = s1.getc(0); //get 0'th character of string s1. $display("0'th character of string 'Cello' = %s",x); s4 = s2.toupper( ); //convert string 's2' to upper case $display("Upper Case of 'hello world' = %s",s4); s4 = s5.tolower ( ); $display("Lower case of 'GOODBYE' = %s",s4); end endmodule
以及仿真log:
String Length s2 = 11 String s1 = Cello 0'th character of string 'Cello' = C Upper Case of 'hello world' = HELLO WORLD Lower case of 'GOODBYE' = goodbye V C S S i m u l a t i o n R e p o r t
在上面的例子中,
声明一些字符串变量。在“initial”语句块中,我们首先得到字符串(s2 = " hello world ";)的长度11。
然后使用" putc "方法给字符串" s1 "的第0个字符加上字符" C ":
s1.putc(0,“C”);
由于s1字符串是“hello”,它现在变成“Cello”。然后,得到字符串s1的第0个字符(现在是“Cello”):
x = s1.getc (0);
我们使用.toupper方法将" s2 "字符串(s2 = " hello world ")转换为全大写,并将结果存储在字符串" s4 "中:
s4 = s2.toupper ();
将" s5 "字符串(s5 = " GOODBYE ")转换为全小写(.tolower方法)
s4 = s5.tolower ( );
审核编辑:汤梓红
-
Verilog
+关注
关注
28文章
1345浏览量
110009 -
System
+关注
关注
0文章
165浏览量
36896 -
字符串
+关注
关注
1文章
578浏览量
20493 -
数据类型
+关注
关注
0文章
236浏览量
13613
原文标题:SystemVerilog中的字符串数据类型
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论