我正在使用libtidy
并需要检索基于字符串的选项的当前值(例如,TidyOptErrFile
, a.k.a. error-file
)。
即使在阅读tidy
source code之后,我也无法弄清楚用哪个函数读取这样一个选项的当前值。
TidyOptGetVal()
函数似乎很有希望,但无论我做什么,它总是返回一个空指针。这是我的极简主义尝试(在C ++中,所以我可以使用auto
关键字):
#include <iostream>
#include <tidy.h>
#include <tidybuffio.h>
#include <tidyenum.h>
using namespace std;
int main(int argc, const char * argv[]) {
auto tidyDoc = tidyCreate();
// The following should set the `error-file` property to `Foobar`
tidyOptParseValue(tidyDoc, "TidyErrFile", "Foobar");
// The type is `ctmbstr` which is just an alias for `const char*`
auto errorFile = tidyOptGetValue(tidyDoc, TidyErrFile);
if (errorFile==nullptr) {
cout << "Null pointer" << endl;
} else {
cout << errorFile << endl;
}
tidyRelease(tidyDoc);
return 0;
}
答案 0 :(得分:1)
我找到了问题的原因,我将发布以供将来参考。
函数tidyOptParseValue()
将API中给出的选项的名称作为其第二个参数。。
因此,例如,在这种情况下,选项名称应为error-file
(不是源代码中的枚举名称)。
更正后的行应为
tidyOptParseValue(tidyDoc, "error-file", "Foobar");
使用该修复程序,按预期打印单词Foobar
。