我目前可以使用readline和read函数从文件中读取一行,并将字符存储在由变量im的大小控制的变量中,例如,如果文件的第一行是
您好,世界
我希望将这两个单词存储在不同的变量中,我会按照
的方式做一些事情file in_file : text open READ_MODE is "hello_world.csv";
variable in_line : line;
variable first_word : string(1to5);
variable second_word : string(1to5);
begin
readline(infile,inline);
read(inline,first_word);
read(inline,second_word);
然而,这取决于我希望能够一般性地读取逗号之前的第一个元素的元素的大小,并将其分配给变量然后查找下一个元素,直到下一个逗号并将其存储在另一个变量中如果这是有道理的。
非常感谢
答案 0 :(得分:2)
开源VUnit test framework有一个包含拆分功能的独立string operations package
impure function split (
constant s : string;
constant sep : string;
constant max_split : integer := -1)
return lines_t;
您可以使用将字符串(s
)拆分为由sep
分隔的部分。例如
parts := split("hello,world",",");
parts
是line
类型元素的向量,因此parts[0].all
在这种情况下等于hello
。查看软件包的testbench并查找“Test split”测试用例,以查看该函数如何处理各种正常输入和边角情况的详细信息。
由于我们使用line
类型而不是string
,因此我们不必知道单个元素的长度。
我是VUnit的作者之一。