【问题标题】:Formatted Write to file in WINAPI在 WINAPI 中格式化写入文件
【发布时间】:2013-06-25 15:10:21
【问题描述】:

使用WriteFile 命令,我正在尝试在我希望的设计中写入文件。问题是我必须使用字符串或缓冲区写入文件。

我必须按以下格式打印:

a1   a2   a3   a4   a5
b1   b2   b3   b4   b5
.
.
.

这些是双重类型。我遇到的主要问题是连接字符串和数字。如果可能的话,我可以简单地做,(如果我们说 + 是运算符,我们可以:)

a1^"   "^a2^"   "^   "^a4"\n".

然后循环,但我没有那个选项。

感谢您的帮助。

【问题讨论】:

  • 查找 std::wstringbuf 以满足您的字符串构造需求。它允许使用与您所描述的非常相似的语法。

标签: c++ c visual-studio-2010 winapi io


【解决方案1】:

将数据预格式化到缓冲区中。如果你真的只能使用 WinAPI,你可以用wsprintf 来做到这一点。然后,当您的缓冲区充满了正确格式化的数据时,使用WriteFile 一次将整个数据写入磁盘。然而,WriteFile 本身并没有任何格式化或转换功能。

【讨论】:

    【解决方案2】:

    一种选择是使用std::ostringstream(或std::wostringstream 用于宽字符)将数据格式化为字符串,然后将其写入文件。

    std::ostringstream strm;
    double a = 1.1;
    double b = 2.2;
    strm << "hello " << a << " world " << b;
    
    DWORD written;
    WriteFile(handle, strm.str().c_str(), strm.str().size(), &written, NULL);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多