sscanf_s找不到字符串中的所有值
sscanf_s can't find all values from string
我想从如下文本字符串中解析整数:
"f 1/2/3 4/5/6 7/8/9"
为:
int arr1[3] = { 1, 4, 7 };
int arr2[3] = { 2, 5, 8 };
int arr3[3] = { 3, 6, 9 };
我编写了以下代码来使用sscanf_s
根据字符串的一般格式进行解析:
// line = "f 1/2/3 4/5/6 7/8/9"
int arr1[3], arr2[3], arr3[3];
sscanf_s(line.c_str(), "f %d/%d/%d %d/%d/%d %d/%d/%d",
&arr1[0], &arr2[0], &arr3[0],
&arr1[1], &arr2[1], &arr3[1],
&arr1[2], &arr2[2], &arr3[2]);
奇怪的是,运行这段代码后,数组的内容是:
arr1 = { 4, 7, -858993460 };
arr2 = { 5, 8, -858993460 };
arr3 = { 6, 9, -858993460 };
这是一种奇怪的结果,它几乎就像它正确地加载了数据,但却将数组向左移动了一位。奇怪的是,sscanf_s
返回9
,这表明它使用我传入的格式找到了9个匹配。我一直试图找到一个错误,但我真的没有看到什么代码做错了。
刚刚编译了这段代码:
#include <iostream>
#include <cstdio>
using namespace std;
int arr1[3], arr2[3], arr3[3];
int main()
{
std::string line = "f 1/2/3 4/5/6 7/8/9";
sscanf_s(line.c_str(), "f %d/%d/%d %d/%d/%d %d/%d/%d",
&arr1[0], &arr2[0], &arr3[0],
&arr1[1], &arr2[1], &arr3[1],
&arr1[2], &arr2[2], &arr3[2]);
std::cout << "arr1 : " << arr1[0] << ", " << arr1[1] << ", " << arr1[2] << std::endl;
std::cout << "arr2 : " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << std::endl;
std::cout << "arr3 : " << arr3[0] << ", " << arr3[1] << ", " << arr3[2] << std::endl;
}
效果很好
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- std::转换为常量字符 * 的字符串在 std::unordered_set<const 字符 * 中找不到>
- 如何修复"找不到系统(字符串)的匹配项
- Arduino IDE告诉我找不到字符串文字运算符“运算符”“DRIVE”
- 找不到错误。C++,字符串
- 字符串查找方法找不到第一字母
- 编译 PyGAMMA Mac Lion:g++ 找不到标准的 C++ 头文件(字符串/iostream..)
- 为什么正则表达式在C++的日语字符串中找不到“(”
- 为什么这段代码找不到我集合中最长字符串的长度?
- 错误:找不到斜杠" "字符串文本运算符
- 当我尝试将类放入标头中时,当我使用类中的字符串进行编译时,我收到找不到成员的错误
- QRegExp找不到预期的字符串模式
- sscanf_s找不到字符串中的所有值
- regex_match找不到字符串格式的RGB颜色
- 将字符串转换为日期:找不到strptime标识符