首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果流构造函数返回损坏的对象

如果流构造函数返回损坏的对象
EN

Stack Overflow用户
提问于 2013-09-15 13:45:39
回答 2查看 819关注 0票数 0

我有这样的代码:

代码语言:javascript
复制
std::string ff = "C:\\res\\pp.txt";
std::ifstream test(ff);
if(test.is_open())
{
    std::string s;
    std::getline(test, s);

}

如果我在构造中放置一个断点并对测试对象进行分析,就会构造它,但是缓冲区是一个不正确的指针。然后,getline崩溃,因为测试已损坏。

作为附带信息,这段代码被执行到一个与一些库链接为gameplay3d的项目中。

一些想法?

编辑:这是堆栈跟踪:

msvcp100d.dll!std::_Xfiopen(const char * filename,int模式,int prot) Línea 85 C++ msvcp100d.dll!std::_Fiopen(const char * filename,int模式,int prot) Línea 94 + 0x11 Bytes C++ sample-browser.exe!std::basic_filebuf >:open(const char * _Filename,int _Mode,int _Prot) Línea 220 + 0x1d Bytes C++ sample-browser.exe!std::basic_ifstream >::basic_ifstream >(const std::basic_string,分配器>& _Str,int _Mode,int _Prot) Línea 725 + 0x1f Bytes C++ C++ Línea 30 + 0x15 Bytes C++

在代码命中_Xfiopen之前,一切似乎都很好。此时,没有创建fp,尽管创建了ifstream,但内部文件缓冲区为null。如果我把这些代码放到另一个项目中,它就能工作,更重要的是,构造函数调用的代码和堆栈完全不同。

EN

回答 2

Stack Overflow用户

发布于 2013-09-15 14:36:06

您对问题的描述听起来似乎是在为一个标准C++库使用标头,但是使用来自另一个不兼容实现的实现。在许多情况下,设置都会导致链接失败,但是在所有情况下都不能阻止不兼容的库被链接。我将验证头是否与实际实现相匹配。

票数 2
EN

Stack Overflow用户

发布于 2013-09-15 13:56:03

首先,不要在ifstream中传递字符串,将其转换为const * type。

代码语言:javascript
复制
 std::ifstream test(ff.c_str());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18813113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档