我对编程很陌生,感谢您对我的包容。我需要帮助来解决我面临的问题,我需要从 excel 文件中读取字符串(我正在使用著名的 libxl.h 库),将其存储在内存中,然后重新排列(使用一些逻辑)并发送它输出到一个新的excel文件。
下面是我的代码。
#include <iostream>
#include <windows.h>
#include <conio.h>
#include "libxl.h"
using namespace libxl;
const wchar_t* s1;
const wchar_t* r64ms[64]; //I intend to create an array of 64 inputs
int main()
{
Book* book2 = xlCreateBook();
if(book2)
{
if(book2->load(L"..\\xxxx.xls"))
{
Sheet* sheetms = getSheetByName(book2, L"Sheet1");
if(sheetms)
{
for (int i=0; i<= 10; i+=1)
{ s1 = sheetms->readStr(i, 1);
r64ms[i]=s1;
std::wcout << r64ms[i]<< std::endl << std::endl;
}
}
}
}
Book* bookout = xlCreateBook();
if(bookout)
{
Sheet* mssheet_out = bookout->addSheet(L"Sheet1");
if(mssheet_out)
{
for (int i=0; i<=64; i++)
{
mssheet_out->writeStr(i, 1, r64ms[i]);
//even if i only have 10 inputs, I guess it doesn't matter//
//and will only send out 10 //
}
}
}
return 0;
}
运行程序时出现错误“ExtractTS.exe 中 0x0fb147af (msvcr100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。” 指针将我发送到此行(请参阅下面的注释行“此行”):
size_t __cdecl wcslen (
const wchar_t * wcs
)
{
const wchar_t *eos = wcs;
while( *eos++ ) ; // <<<< This line//
return( (size_t)(eos - wcs - 1) );
}
无论我尝试使用 'std::wcout' 打印还是尝试将 str 写入 excel 文件,程序都会在那一刻停止并给我这个错误。
有人可以帮助我吗?我怀疑这是我在 const wchar_t* 或其他东西上创建数组的方式上的错误。我试图在网上搜索并找不到类似的问题/解决方案。
非常感谢您对我的耐心等待!