方括号内的 sscanf 分析值
sscanf parsing value inside square brackets
我正在尝试解析方括号内的值:
米瓦尔[3]
std::string key("MYVAR[3]");
int idx;
int result = sscanf(key.c_str(), "%*s[%i]", &idx);
if (result > 0)
{
std::cout << "It's array value" << std::endl;
}
我该怎么做?
%*s
将读取字符[
,因此您应该使用说明符"%*[^[][%i]"
在字符之前停止。
"MYVAR[3"
和"MYVAR[3]"
都将提供相同的结果。
int result = sscanf(key.c_str(), some_format, &idx);
if (result > 0)
IOW,整数后的内容不相关/未检查,因为sscanf()
不用于解析方括号内的内容。
代码应检查两个括号是否存在。
存在许多方法。 建议使用 "%n"
来检测扫描完成情况。
#define FMT_NOT_LBRACKET "%*[^[]"
#define FMT_BRACKETED_INT "[%i]"
int idx;
int n = 0;
sscanf(key.c_str(), FMT_NOT_LBRACKET FMT_BRACKETED_INT "%n", &idx, &n);
if (n) {
Success();
}
相关文章:
- 用C++中的sscanf赋值
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 具有结构成员char数组的sscanf
- 对于C++,方括号中的标题必须总是在引号中的标题之上吗
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 检查由括号、方括号和大括号组成的一组方括号是否有效?
- 方括号 [] 和括号 () 之间的犰狳库差异
- C++带方括号的函数调用
- 删除动态数组上不带方括号的内容
- sscanf() 有两个字符串参数
- SSCANF 进入 uint8 阵列失败
- Arduino使用sscanf读取浮点数
- 使用 sscanf 设置结构引用的值
- 如何在方括号内打印整个数组,而不是打印每个值?
- 方括号在"map <string, int> instance[numberFeatures];"中是什么意思
- 如何使用 sscanf 提取浮点数?
- 如何输入和输出方括号运算符 []
- 创建一个可以接收 board1[{1,1}]='X'; 的类; ?(方括号内的大括号)
- 此代码行末尾的方括号是什么意思
- 方括号内的 sscanf 分析值