C++ sscanf#u s can';无法从字符串中找到所有值
我想从如下文本字符串中解析整数:C++ sscanf#u s can';无法从字符串中找到所有值,c++,string,visual-c++,format,scanf,C++,String,Visual C++,Format,Scanf,我想从如下文本字符串中解析整数: "f 1/2/3 4/5/6 7/8/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], &a
"f 1/2/3 4/5/6 7/8/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 };
这是一种奇怪的结果,几乎就像它正确地加载了数据,但随后将数组向左移动了1。奇怪的是,
sscanf\u 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;
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/%d/%d/%d”,
&arr1[0],&arr2[0],&arr3[0],
&arr1[1]、&arr2[1]、&arr3[1],
&arr1[2]、&arr2[2]、&arr3[2]);
std::我是否可以重建整个VS解决方案,并且它现在似乎运行良好…真的不知道为什么它以前不能正确运行。不过,感谢您的回复。
#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;
}