0

我对编程很陌生,感谢您对我的包容。我需要帮助来解决我面临的问题,我需要从 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* 或其他东西上创建数组的方式上的错误。我试图在网上搜索并找不到类似的问题/解决方案。

非常感谢您对我的耐心等待!

4

0 回答 0