【问题标题】:How to port stlport ifstream(HANDLE) to MS stl ifstream?如何将 stlport ifstream(HANDLE) 移植到 MS stl ifstream?
【发布时间】:2012-07-12 07:59:41
【问题描述】:

我目前正在使用 MSVS 2010 将代码从 stlport 5.1.3 移植到 stl。我遇到了一个问题,希望有人可以帮助我。

代码中的某处是:

HANDLE lHandle = CreateFileW(...);

ifstream lStream( lHandle );

// more job here...

这是使用 stlport 构建的,因为 basic_ifstream 有一个 cTor,它采用 void*。但标准 stl 没有。我应该写这样的东西:

ifstream lStream( /*FileName*/ );

...但我的文件名是 wchar_t *。 ifstream cTor 只需要 char *...

你知道解决方法吗?

提前致谢,

多米尼克

【问题讨论】:

  • 请注意,ofstream 也是如此......
  • 我认为大多数 STL 类都有宽字符变体;在这种情况下,wifstream 有一个接受 wchar_t* 的 ctor。
  • 你是对的。 VS2005版本好像不是这样……

标签: windows stl stlport


【解决方案1】:

嗯,似乎 MSVC2010 中包含的 stl 提供了我需要的所有东西,但文档中没有。

使用 CreateFile 是因为以前的 std::fstream 无法处理宽字符文件名。现在,它有一个 cTor 和一个 open() 成员。

另外,新的 ifstream 允许程序员设置共享保护模式。我也需要它,它是由 CreateFile 完成的......

因此,“新”stl 为我提供了所需的所有功能。只是文档中的一个小缺陷。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 2016-05-27
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多