在libxl.h

时间:2016-11-02 09:21:35

标签: c++ arrays wchar-t libxl

我是编程的新手,谢谢你对我的支持。 我需要帮助解决我面临的问题,我需要从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'打印出来,或者我尝试将writeStr写入excel文件,程序会在那一刻停止并给我这个错误。

有人可以帮助我吗? 我怀疑这是我在const wchar_t *上创建数组的方式的错误。 我试图在线搜索,找不到类似的问题/解决方案。

非常感谢你对我的耐心!

0 个答案:

没有答案