我想使用opencv FileStorage对象编写XML文件。
我看到的大部分示例都与以下
类似FileStorage fs("d:\\1.xml" , FileStorage::WRITE);
fs << "one" << 1;
我想编写一个带有修改名称变量的部分,这意味着不必在编译时插入文本。我寻找这样的东西:
string st = "1";
fs << st.c_str() << 1;
然而,我继续遇到运行时错误。它拒绝工作,我尝试过使用opencv字符串类型,stl字符串类型,char *,但仍然无法使其工作。
答案 0 :(得分:4)
这是一个棘手的问题。查看persistence.cpp
我发现错误被抛出,因为在变量名上检查了cv_isalpha
。这意味着您的变量名称应以字母开头!
尝试执行以下操作:
int main() {
string oName;
oName = "a"; // Now, THIS will crash if you assign "number" characters, e.g "1"
FileStorage fs("test.yml", FileStorage::WRITE);
fs << oName.c_str() << 1 ;
return 0;
}
这应该有用。
已编辑:只要您以字母开头(例如“a1”),就可以在“字符串”变量中添加数字,它也可以。