Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ sscanf#u s can';无法从字符串中找到所有值_C++_String_Visual C++_Format_Scanf - Fatal编程技术网

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;
}