c++ 无法打开json文件

qni6mghb  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(197)

我需要加载一个JSON文件并将其复制到一个字符串缓冲区中,但无法打开该文件。可能是什么问题,我可以使用其他方法吗?
我的JSON文件如下所示:

{
  "ip": [ "212.253.144.10","192.32.12.1","192.12.1.1"]
}

和代码:

#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
void CMFCJasonDlg::OnBnClickedButton2()

{

    ifstream inputFile("C:\\Users\\hp\\Desktop\\VK\\ip.json");
    if (!inputFile.is_open())
    {
        MessageBox(L"Failed to open file", 0, 0);
        CloseHandle(hdevice);
        return; 
    }
    
    stringstream buffer;
    buffer << inputFile.rdbuf();
    string inputString = buffer.str();
    inputFile.close();
    
    DWORD inputBufferSize = sizeof(inputString);
    char* inputBuffer = new char[inputBufferSize];
    strncpy_s(inputBuffer, inputBufferSize, inputString.c_str(), inputString.size());
    
    delete[] inputBuffer;

}
wxclj1h5

wxclj1h51#

试试看

int inputBufferSize = inputString.size() + 1;

+1表示空终止符

jecbmhm3

jecbmhm32#

您代码有两个问题:
首先,sizeof(inputString)返回变量inputString的大小,它与变量的长度无关,应该使用inputString.length()来获取长度。
第二,字节数组中存储的每个字符串都以空终止符(\0)结尾,您应该为它分配空间,具体来说,将char* inputBuffer = new char[inputBufferSize];替换为char* inputBuffer = new char[inputBufferSize+1];

相关问题