SV芯片验证之字符串类型

在SV中,string类型用来表示可变长度的字符串

字符串类型变量的存储单位为byte类型(8-bit,一个字节),它的内存是动态分配的,因而无需担心它的内存空间管理分配问题。

不同于C函数,SV中的字符串结尾没有“空字符”即null字符“\0”

一、字符串常见的使用方式

***字符串常见使用方式***
typedef logic [15:0] r_t; 
// 此处的logic未声明类型,即默认为变量类型,然后将其自定义为r_t,r_t是个变量类型而不是变量

r_t r; //r是变量类型r_t声明的一个变量

integer i = 2;

string b = ""; //等同于 string b;

string a = {"Hi", b}; //把两个字符串拼接到一起

r = r_t'(a); 
//显式转换。把a这个字符串类型用r_t这个变量类型转换成变量类型,然后赋值给变量r。

b = string'(r); 
//显式转换。把r这个变量类型用string这个字符串类型转换成字符串类型,然后赋值给变量b。

b = "Hi"; //赋值

b = {5{"Hi"}}; //5个"Hi"

a = {i{"Hi"}}; //将i=2带入,2个“Hi”

a = {i{b}}; //此处的b不清楚是5个Hi还是1个Hi

a = {a, b}; //拼接

a = {"Hi", "+", b}; //拼接三个字符串到一起

b = {"H", ""}; //拼接

a[0] = "h"; //赋值

a[0] = "cough"; 
//即便把字符串“cough”赋值给a[0],但最终a[0]的值还是h,前面的coug就被截取掉了。a[0]只有一个字节8bit的大小,而一个字母h的大小就是一个字节,刚刚好。

二、字符串的内建方法

1、str.len(): 返回字符串的长度

2、str.putc(i, c): 将字符串里的第i个字符替换成字符c,等同于str[i] = c

3、str.getc(i): 返回第i个字符

4、str.substr(i, j): 将从第i个字符到第j个字符的字符串返回

5、str.atoi(), .atohex(), .atooct(), .atobin(): 将字符串看成十进制、十六进制、八进制、二进制,然后转换成十进制整型

str = "12345";

int i = str.atoi(); //将字符串“12345”看成是十进制,然后转换成十进制整型12345,最后赋值给i

此处的字符串是“12345”,是十进制的格式,所以选择str.atoi();如果字符串是“1100”二进制格式,那么就选择用str.atobin()。

string value = “1001”

value.atoi() = 1001 //将字符串“1001”看成是十进制,然后转换成十进制整型

value.atobin() = 1001 //将字符串“1001”看成是二进制,然后转换成十进制整型

内建方法.size()通常是给数组array使用的,如array.size()

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值