我目前这样做是为了将 ostringstream
的内容写入文件:
... // -- Loop 1 Start
std::ostringstream osStr;
... // -- Loop 2 Start
cv::string s(osStr.str());
std::istringstream iss(s);
cv::vector<cv::string> subVec;
do{
cv::string sub;
iss >> sub;
subVec.push_back(sub);
} while (iss);
cv::FileStorage fs("subVec.txt", cv::FileStorage::WRITE);
fs << "subVec" << subVec;
fs.release();
... // -- Loop 2 End
... // -- Loop 1 End
但这会覆盖文件中之前的内容。
所以我将 cv::FileStorage fs("subVec.txt", cv::FileStorage::WRITE);
移动到循环之前,并将 fs.release
到循环之后。
cv::FileStorage fs("subVec.txt", cv::FileStorage::WRITE);
... // -- Loop 1 Start
std::ostringstream osStr;
... // -- Loop 2 Start
cv::string s(osStr.str());
std::istringstream iss(s);
cv::vector<cv::string> subVec;
do{
cv::string sub;
iss >> sub;
subVec.push_back(sub);
} while (iss);
fs << "subVec" << subVec;
... // -- Loop 2 End
... // -- Loop 1 End
fs.release();
它的工作方式是连续写入 .txt
,但由于重复键而无法使用:
%YAML:1.0
subVec:
- "1"
- "2"
...
- "33"
- "34"
subVec:
- "1"
- "3"
...
- "30"
- "31"
看看 subVec 是如何重复的
我正在寻找一种方法将 ostringstream
的内容保存到一个文件中,该文件不会每次都覆盖内容,但实际上是可读的。
OpenCV 错误:cvGetFileNode 中的解析错误(subVec.txt(27):重复键)
最佳答案
如果有帮助,我在类级别打开一个 std::ofstream m_OutFile
成员,使用 m_OutFile.open(file.c_str(), std::ios::out );
在构造函数调用中。我还给它一个缓冲区来保存硬盘访问:
m_OutFile.rdbuf()->pubsetbuf(m_CharBuffer,BUFFER_SIZE);
然后每当我想在函数中写入它时,我都会使用
std::ostringstream oStr;
oStr << "some text and things" << std::ends;
m_OutFile << oStr.str() << std::endl;
对我来说很好用。
关于c++ - 将 ostringstream 输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276116/