哪个文件替换了strstrea.h和stdiostr.h?

时间:2012-02-21 08:37:18

标签: c++ windows

我正在尝试将当前代码从vs6.0迁移到vs2010。

编译代码时遇到错误,例如

  

"无法打开包含文件:' stdiostr.h':没有这样的文件或目录"

代码中包含两个文件......

  1. stdiostr.h
  2. strstrea.h
  3. 但是我的Visual Studio 2010包含文件夹中没有这两个文件,甚至包括stdiostrstrstrea文件。而在Visual Studio 6.0的包含文件夹中,文件存在。

    那么任何人都可以告诉我应该包含哪些文件来使这段代码与Visual Studio 2010一起使用?

    在互联网的某个地方,我读到strstreamstrstrea的替代方案。是真的吗?

2 个答案:

答案 0 :(得分:1)

我认为以下链接可以帮助您解决问题。

  

您必须删除任何旧的iostream标头(fstream.h,   iomanip.hios.hiostream.histream.hostream.hstreamb.h和   strstrea.h)您已包含在代码中并添加了一个或多个   新的标准C ++ iostream标头(<fstream><iomanip><ios>,   <iosfwd><iostream><istream><ostream><sstream><streambuf>,   和<strstream>,都没有.h扩展名

http://support.microsoft.com/kb/154419

http://msdn.microsoft.com/en-us/library/8h8eh904(v=vs.90).aspx

答案 1 :(得分:0)

  

问题7:为什么我得到&#34;编译器错误C2371:&#39;标识符&#39;重新定义;不同的基本类型&#34;?

     

A7:在早于Visual C ++ 2005的Visual C ++版本中,混合标准C ++标头和旧的iostream标头会导致此错误,即使它们包含在不同的源文件中也是如此。以下是不同的标题:

     

Old iostream Headers   FSTREAM.H IOMANIP.H   IOS.H IOSTREAM.H   ISTREAM.H OSTREAM.H   STDIOSTR.H STREAMB.H   STRSTREA.H

来源http://support.microsoft.com/kb/154419

这些与C ++标准库中的标题之间没有一对一的映射。

我建议您删除对这些文件的引用,然后在标准标头中插入特定声明所需的标头。

从VC ++ 6.0天开始,您可能会发现某些旧类型已被弃用。 http://en.cppreference.com/是一个很好的信息来源。