1.字符串是什么?
字符串(string)是SystemVerilog中的一种文本数据类型,用于表示字符序列。
2.字符串的基本语法
string variable_name = "value";
例如:
string val = "hello";
3.字符串的常见用法
- 字符串的连接
string str1 = "hello";
string str2 = "world";
string str3 = {str1,""str2};
module str_tb();
string str1 = "hello";
string str2 = "world";
string str3 = {str1, " ", str2};
string str4 = {str1,"===",str2};
initial begin
$display("str3 = %s",str3);
$display("str4 = %s",str4);
end
endmodule
2. 获取字符串的长度
string str1 = "Hello";
int len = str1.len();
module str_len_tb();
string str1 = "hello";
int len = str1.len();
initial begin
$display("len = %d",len);
end
endmodule
3. 访问字符串
module str_get_tb();
string str1 = "hello";
string str2 = "Hello world!";
initial begin
$display("str1[0] = %s",str1[0]);
$display("str1[1] = %s",str1[1]);
$display("str1[4] = %s",str1[4]);
$display("str1[6] = %s",str1[6]);//越界了,vcs默认会返回一个空字符
end
initial begin
foreach(str2[c]) begin
$display("%s",str2[c]);
end
end
endmodule
4.字符串的运算方法
module tb();
string str1 = "xiaoma";
string str2 = "xiaowang";
initial begin
if(str1 == str2)
$display("str1 = %s is equeal to str2 = %s",str1,str2);
else
$display("str1 = %s is not equeal to str2 = %s",str1,str2);
end
initial begin
if(str1 > str2)
$display("str1 = %s is long than str2 = %s",str1,str2);
else
$display("str1 = %s is shorter than to str2 = %s",str1,str2);
end
initial begin
$display("%s",{3{str1}});
end
endmodule
4.小结
ystemVerilog中的字符串(string)是一种文本类型的数据,用于表示字符序列,可以用双引号来定义。字符串支持各种文本处理操作,包括连接字符串,通过双引号可以进行拼接;获取字符串长度using .len()方法返回整型值;访问单个字符使用中括号加索引,索引从0开始;比较字符串支持等于、不等于等比较运算符;遍历字符串可以使用foreach自动迭代每个字符。字符串还提供了许多内置方法,例如find可以查找子串,substr取子串等。但是需要注意字符串访问时索引不能越界。