我正在制作一个系统,您可以在其中添加公寓的详细信息,然后客户将能够查看列表并预订任何列表。因此,我必须定义一种方法来使预订的公寓不可用,我已经定义了一个生成随机数的函数,并且我添加了一个值为'可用的字符串'因此,每次将记录保存到文件中,在id旁边,您都可以看到可用的字符串,如下所示:
string available = " : available";
cout << "Auto-Generated ID:" << randomNum() << endl << endl;
auto_id = to_string(randomNum()) + available;
到目前为止,这个工作完全正常,但另一方面,当用户预订公寓时,我已经定义了另一个应该通过同一个文件的功能,并将其更改为不可用,以及我&# 39; ve定义了一个名为unavailable的字符串,其值为&#39;不可用&#39;和这样的替换字符串函数:
void change_status(string available, string unavailable) {
std::ifstream ifile("apartment.txt", std::ios::binary | ios::app);
ifile.seekg(0, std::ios_base::end);
long s = ifile.tellg();
char *buffer = new char[s];
ifile.seekg(0);
ifile.read(buffer, s);
ifile.close();
std::string txt(buffer, s);
delete[] buffer;
size_t off = 0;
while ((off = txt.find(available, off)) != std::string::npos)
txt.replace(off, sizeof(available)-1, unavailable);
std::ofstream ofile("apartment.txt");
ofile.write(txt.c_str(), txt.size());
}
这就是我调用函数的方式;
string unavailable = " : unavailable";
cout << "Enter In Apartment ID" << endl;
cin >> booker_apartment_id;
serachi = to_string(booker_apartment_id) + unavailable;
change_status(auto_id, serachi);
但是当功能完成后,我尝试显示数据以检查它是否已更改为不可用,最终会出现此错误;
Unhandled exception at 0x0FCB7EA6 (msvcp120d.dll) in Assignment.exe: 0xC0000005: Access violation reading location 0x006FEF28.
我是业余爱好者,这是我在c ++中的第二个项目,任何帮助解决这个问题,或任何建议的做这种事情的方法,都非常感激。
编辑:这是我的调试器所指的地方;
if (_State == ios_base::goodbit
&& _Ostr.rdbuf()->sputn(_Str.c_str(), (streamsize)_Size)
!= (streamsize)_Size) // an arrow appears next to this line after breaking....
_State |= ios_base::badbit;
else
for (; 0 < _Pad; --_Pad) // pad on right
if (_Traits::eq_int_type(_Traits::eof(),
_Ostr.rdbuf()->sputc(_Ostr.fill())))
{ // insertion failed, quit
_State |= ios_base::badbit;
break;
}
_Ostr.width(0);
_CATCH_IO_(_Ostr)
}