从c++ Visual 2006到V2010的迁移
Migration from C++ Visual 2006 to V2010 CFile to ifstream
我想迁移一些用c++ Visual 2006编写的代码到c++ V2010。这是:
CFile *fInp;
...
int iStatus = fInp->Read(chMsg, iMaxBuffer);
,现在我试着这样做:
ifstream *fInp;
...
int iStatus = fInp->read(chMsg, iMaxBuffer);
but CFile::Read返回int,表示移动了多少个字符,但是ifstream:: Read没有。我怎样才能得到这个值?
这个可以吗?
fInp->read(chMsg, iMaxBuffer);
int iStatus = fInp->gcount();
? ?
看完文档后,我的回答如下:
ifstream *fInp;
//...
fInp->read(buffer, iMaxBuffer);
if (*fInp)
std::cout << "read " << iMaxBuffer << " characters successfully.";
else
std::cout << "only " << fInp->gcount() << " could be read";
CFile和ifstream并不是真正相关的,不知道为什么你要用ifstream代替CFile。
是否有不能使用CFile的原因?它应该仍然可以使用更高版本的VS.
编辑:除了VB_overflow的答案,我猜你可以做这样的事情,如果你觉得你真的需要一个iStatus变量,而不仅仅是用if检查fInp。
int iStatus = fInp->failbit;
如果它为真,就意味着它没有失败。我想我更喜欢用if(fInp)
相关文章:
- 将项目从 Debian 8 Xenomai 2.x 迁移到 Debain 9 Xenomai 3.x
- 从 MFC C++ 6.0 应用程序迁移到 VS 2005
- 将预处理器配置定义迁移到 constexpr,而不会造成内存膨胀
- 如何在 MSVC C++中迁移 x64 的 x86 代码
- "acceptor"在从TCP迁移到UDP时不是"boost::asio::ip::udp
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 如何在新设计中迁移需要几个额外参数的函数
- 如何将 C 函数指针迁移到C++?
- WDK 如何迁移到 v4 打印机驱动程序
- 迁移到 Visual Studio 2015 时 ATL 不起作用
- 从 calloc() 迁移到 new
- 如何将C++项目从 32 位迁移到 64 位以支持 MAC OS 10.14(莫哈韦)?
- 从固定函数迁移到 GLSL OpenGL:我应该如何修改我的视图(lookAt)矩阵和透视矩阵?
- C++从多线程 CPU 程序迁移到 GPU
- 自从迁移到 64 位以来,我在随机 glVertexAttribArray 调用中收到来自 nvoglv64.dll 的
- 如何管理和迁移C++库?
- 光纤可以在线程之间迁移吗?
- 将缓存线迁移到另一个核心
- 迁移 CMake 会导致多阶段 Docker 构建
- 从c++ Visual 2006到V2010的迁移