c++ - 将 ostringstream 输出到文件

标签 c++ string ostringstream

我目前这样做是为了将 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/

相关文章:

c++ - 让 API 使用 std::string 作为错误代码返回是不好的做法吗?

使用 cout 中的链接时 C++ ostringstream 奇怪的行为

c# - 如何在 C# 代码中访问 C++ 类?

c++ - 检查 std::vector<bool> 是否仅由真值组成

string - 避免 Scala 中的隐式定义歧义

php - 获取字符串的最后一个单词

c++ - 为什么我的复制构造函数被删除了?

c++ - 不理解条件变量超时

c++ - std::stringstream 运算符 << 使用 strcat 吗?