diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp index 1ee96bb09..1170fc407 100644 --- a/modules/core/include/opencv2/core/operations.hpp +++ b/modules/core/include/opencv2/core/operations.hpp @@ -2917,6 +2917,9 @@ CV_EXPORTS FileStorage& operator << (FileStorage& fs, const string& str); static inline FileStorage& operator << (FileStorage& fs, const char* str) { return (fs << string(str)); } +static inline FileStorage& operator << (FileStorage& fs, char* value) +{ return (fs << string(value)); } + inline FileNode::FileNode() : fs(0), node(0) {} inline FileNode::FileNode(const CvFileStorage* _fs, const CvFileNode* _node) : fs(_fs), node(_node) {} diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index 6b55eb2bb..bf976cf54 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -454,3 +454,12 @@ protected: TEST(Core_InputOutput, huge) { CV_BigMatrixIOTest test; test.safe_run(); } */ +TEST(Core_InputOutput, FileStorage) +{ + std::string file = cv::tempfile(".xml"); + cv::FileStorage f(file, cv::FileStorage::WRITE); + + char arr[66]; + sprintf(arr, "sprintf is hell %d", 666); + EXPECT_NO_THROW(f << arr); +}