gpt4 book ai didi

c++ - 两行 Xerces 程序中的异常

转载 作者:行者123 更新时间:2023-11-28 03:57:08 24 4
gpt4 key购买 nike

下面的代码在 XMLFormatTarget 行给我一个异常,但是如果我将字符串从 "C:/test.xml" 更改为 "test .xml" 它工作正常。

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>

using namespace xercesc;

int main()
{
XMLPlatformUtils::Initialize();

XMLFormatTarget *formatTarget = new LocalFileFormatTarget("C:/test.xml");

return 0;
}

[编辑]Xerces 异常是:

Error Message: unable to open file 'C:\test.xml'

Windows 异常(exception)是:

Access is denied

最佳答案

可能是您没有足够的权限写入C:\。在这种情况下,Xerces 可能会报告错误并引发异常。

Access Denied 异常通常是您在没有管理员凭据的情况下尝试写入系统目录的情况。


也许它也与目录分隔符有关:

XMLFormatTarget *formatTarget = new LocalFileFormatTarget("C:\\test.xml");

在 Windows 上,目录分隔符是反斜杠“\”。有些图书馆不在乎(而且我从未使用过 Xerces,所以我不知道)。在 CC++ 中,反斜杠也是一个转义字符,所以如果你想要一个乱码,你必须加倍它“\”在你的字符串中。

此外,告诉我们您得到的异常是什么会对我们更有帮助。


没有直接关系,但从你的代码来看,你似乎从来没有delete formatTarget。我假设这是示例代码,但如果不是,您应该将以下行添加到您的代码中:

delete formatTarget;

或者改用作用域指针:

boost::scoped_ptr<XMLFormatTarget> formatTarget(new LocalFileFormatTarget("C:\\test.xml"));

避免内存泄漏。

关于c++ - 两行 Xerces 程序中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com