我需要加载一个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;
}
2条答案
按热度按时间wxclj1h51#
试试看
+1表示空终止符
jecbmhm32#
您代码有两个问题:
首先,
sizeof(inputString)
返回变量inputString
的大小,它与变量的长度无关,应该使用inputString.length()
来获取长度。第二,字节数组中存储的每个字符串都以空终止符(
\0
)结尾,您应该为它分配空间,具体来说,将char* inputBuffer = new char[inputBufferSize];
替换为char* inputBuffer = new char[inputBufferSize+1];
。