sscanf
从字符串中读取格式化数据
语法
描述
从一个
= sscanf (str
,formatSpec
)str
,将其转换为指定的格式formatSpec
,并以数组形式返回结果。str
字符数组或字符串标量。的sscanf
函数重复应用formatSpec
中的字符序列str
直到它到达终点str
或者不匹配formatSpec
到一个字符序列。如果str
是具有多行的字符数组,sscanf
按列顺序读取字符。
将输出数组的大小设置为一个
= sscanf (str
,formatSpec
,sizeA
)sizeA
然后从str
输入到输出数组中。sizeA
必须是正整数还是有形式(mn)
,在那里米
而且n
都是正整数。
例子
将字符向量转换为数字
创建一个字符向量,表示由空格分隔的数。将字符向量转换为数字列向量。sscanf
将空格字符作为数字之间的分隔符。
空空的='2.7183 3.1416 0.0073'
CHR = '2.7183 3.1416 0.0073'
A = sscanf(chr,' % f ')
一个=3×12.7183 3.1416 0.0073
转换文本和调整输出数组的大小
创建一个表示多个数字的字符串,并使用sscanf
.指定输出数组的大小。
str ="2.7183 3.1416 0.0073"
STR = "2.7183 3.1416 0.0073"
A = sscanf(str,' % f '1, [3])
一个=1×32.7183 3.1416 0.0073
转换str
到2 × 2矩阵。因为str
只表示三个数字,sscanf
垫一个
有足够的0来填满矩阵。
A = sscanf(str,' % f '(2 - 2))
一个=2×22.7183 0.0073 3.1416 0
计算在文本中找到的元素
创建一个包含用空格分隔的数字的字符串。数一下sscanf
当它将字符串转换为数字时,输入到输出数组中。
str ="78 72 64 66 49"
STR = "78 72 64 66 49"
计算输出数组中的元素一个
.属性转换字符串中的数字% d
操作符。% d
匹配以空格分隔的整数。返回in的元素数一个
,指定第二个输出参数。
[A,n] = sscanf(str,' % d ')
一个=5×178 72 64 66 49
N = 5
显示错误信息
创建一个字符串并从中读取数据。当sscanf
转换所有输入字符串失败,显示错误消息。
str =3.14159是圆周率的前六位数字
STR = "3.14159是圆周率的前6位"
将数字转换为str
.自str
还包含以下字符% f
不能匹配,sscanf
返回一个错误消息。sscanf
一遇到单词就停止处理“是”
因为它不能转换成数字。
[A,n,errmsg] = sscanf(str,' % f ')
A = 3.1416
N = 1
errmsg = '格式匹配失败。'
返回扫描的最后位置
创建一个字符向量并从中读取数据。当sscanf
未能转换所有输入,则返回紧接在其所在位置后面的索引sscanf
停止了。使用此索引显示未扫描的输入。
空空的=3.14159是圆周率的前6位
CHR = '3.14159是圆周率的前6位数字'
将数据转换为空空的
.返回索引。
[A,~,~,nextindex] = sscanf(chr,' % f ')
A = 3.1416
Nextindex = 9
显示的字符空空的
那sscanf
没有扫描。
空空的nextindex:结束)
Ans = '是圆周率的前六位数字'
匹配指定字符
创建一个包含多个温度的字符串,由度符号和字母表示F
.将温度转换为数值数组。
要插入度符号(char (176)
),使用方法
函数。
T =“78f 72f 64f 66f 49f”;degreeSymbol = char(176);T = insertBefore(T,“F”degreeSymbol)
T = "78°f 72°f 64°f 66°f 49°f "
以数值数组的形式返回温度。
A = sscanf(T,strcat(“% d”degreeSymbol,“F”))
一个=5×178 72 64 66 49
输入参数
str
- - - - - -输入文本扫描
字符数组|字符串标量
输入要扫描的文本,指定为字符数组或字符串标量。如果str
是字符数组,那么它可以有多行,和sscanf
按列顺序读取字符。
数据类型:字符
|字符串
formatSpec
- - - - - -输入字段的格式
格式化操作
输入字段的格式,使用格式化操作符指定。formatSpec
可以是单引号中的字符向量,也可以是字符串标量。
数值字段
该表列出了将文本转换为数字输出的可用转换说明符。sscanf
将值转换为十进制(以10为基数)表示。
数字字段类型 |
转换说明符 |
描述 |
---|---|---|
整数,签署了 |
|
以10为底。 |
|
这些值决定基数:
|
|
|
64位值,以10、8或16为基数。 |
|
整数,无符号 |
|
以10为底。 |
|
基数8(八进制)。 |
|
|
以16为基数(十六进制)。 |
|
|
64位值,以10、8或16为基数。 |
|
浮点数 |
|
浮点值。输入字段可以包含以下任何一个(不区分大小写): |
字符字段
该表列出可用的转换说明符来转换文本,以便输出为字符数组。
字符字段类型 |
转换说明符 |
描述 |
---|---|---|
字符向量或字符串标量 |
|
读课文直到 |
|
读取任何单个字符,包括空格。 |
|
模式匹配 |
|
只能读取括号中的字符,直到第一个不匹配的字符或空白。 例子: |
如果formatSpec
则包含数字和字符说明符的组合sscanf
将每个字符转换为其等效数字。
可选的运营商
要忽略的字段和字符
sscanf
按顺序读取所有数值和字符,除非您告诉它忽略某个特定字段或字段的一部分。若要跳过字段,请插入星号(*
)在百分号(% gydF4y2Ba
).例如,要跳过整数,请指定% * d
.字段宽度
若要指定一次读取的数字或文本字符的最大数量,请在百分比字符后插入一个数字。例如,
% 10 c
一次最多读取10个字符,包括空格。% 4 f
一次最多读取四位数字,包括小数点。忽略文字
sscanf
忽略紧接在转换说明符之前或之后的指定文本。例子:
水平% u
读取“使”
作为1
.例子:
% uStep
读取的2个步骤
作为2
.
数据类型:字符
|字符串
sizeA
- - - - - -输出数组尺寸
正
(默认)|整数|二元行向量
输出数组的尺寸,一个
,指定为正
、正整数或两元行向量。
形式的 |
描述 |
---|---|
|
将输入读到最后。 |
|
最多阅读 |
|
最多阅读 |
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
一个
-输出数据
列向量|矩阵|字符数组
输出数据,作为列向量、矩阵或字符数组返回。的类别和大小一个
所指定的转换formatSpec
和指定的输出数组的大小sizeA
:
如果
formatSpec
那么,只包含数字说明符一个
是数值列向量。如果还指定sizeA
参数,然后一个
是指定大小的矩阵,必要时用零填充。如果输入的值小于sizeA
值,然后是大小一个
小于sizeA
.相反,它是存储从输入扫描的值所需的大小。如果
formatSpec
则仅包含64位有符号整数说明符一个
是一流的int64
.如果
formatSpec
则仅包含64位无符号整数说明符一个
是一流的uint64
.否则,
一个
是一流的双
.
如果
formatSpec
只包含% c
或% s
说明符,然后一个
是一个字符向量。如果你还指定sizeA
,然后一个
是字符数组,必要时用空字符填充。(null字符是值为0的控制字符。)如果输入的值小于sizeA
字符,则大小为一个
小于sizeA
.相反,它是存储从输入扫描的字符所需的大小。如果
formatSpec
则包含数字和字符说明符的组合一个
是数字吗双
,sscanf
将每个字符转换为其等效数字。这种转换甚至发生在formatSpec
显式跳过所有数字字段(例如,formatSpec
是% * d %年代”
).如果
sscanf
不能匹配所有的输入formatSpec
,然后一个
可以是数字或字符数组。这类人一个
这取决于sscanf
在停止处理之前读取。
数据类型:双
|int64
|uint64
|字符
n
-读入输出数组的元素个数
整数
读入输出数组的元素数,作为整数返回。
数据类型:双
errmsg
-错误信息
特征向量
错误消息,作为字符向量返回。如果str
包含以下任何数据sscanf
那么不能转换errmsg
包含错误信息。如果sscanf
然后成功转换所有数据errmsg
是空字符向量。
数据类型:字符
nextindex
-最后一个字符扫描后的位置
整数
扫描到的最后一个字符之后的位置,作为整数返回。
数据类型:双
提示
读取函数的格式说明符
sscanf
而且fscanf
不同于书写功能的格式sprintf
而且流
.读取函数不支持精度字段。金宝appwidth字段指定写入的最小值,但读取的最大值。
扩展功能
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。