首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Textfile读入Safearray

将Textfile读入Safearray
EN

Stack Overflow用户
提问于 2010-03-18 10:41:10
回答 1查看 826关注 0票数 1

我需要读取文本文件并将数据存储到Safearray中。

我用这个函数试了一下:

代码语言:javascript
复制
bool Parse::LoadTxtFileIntoSafearray(string* strPath, SAFEARRAY** pByteArray)
{
bool bReturn = false;

string line;
int iOffset = 0;
char* pcBuffer = NULL;

std::ifstream infile ( strPath->data() );
if ( !infile.fail() )
{
    infile.seekg(0, std::ios::end);
    int iSize = infile.tellg();
    infile.seekg(0);
    pcBuffer = (char*)calloc(iSize,sizeof(char));
    if(pcBuffer)
    {
        infile.read(pcBuffer, iSize);
        iSize = strlen(pcBuffer);
        SAFEARRAYBOUND sb;
        sb.cElements = iSize;
        sb.lLbound = 0;
        *pByteArray = SafeArrayCreate(VT_UI1,1,&sb);

        BYTE* pData;
        SafeArrayAccessData(*pByteArray,(void **)&pData);
        memcpy(pData, pcBuffer,iSize);
        SafeArrayUnaccessData(*pByteArray);
        delete pcBuffer;
        pcBuffer = NULL;
        bReturn = true;
    }
}
return bReturn;
}

问题是文件的大小大于读取的字节.

怎么啦?

问候茶树

EN

回答 1

Stack Overflow用户

发布于 2010-03-18 10:53:48

正如在手册页中提到的,读取尝试读取向上计数字节。要确保读取所有字节,必须循环。

顺便提一句:您并不总是能够保证使用静态文件,所以假设文件大小不会改变,可能会给您带来麻烦(缓冲区溢出,没有读取完整的文件,无休止的循环)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2469095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档