C++ 更改二进制文件中的字符串
我正在开发一个系统,在这个系统中,您可以添加公寓的详细信息,然后客户可以查看列表并预订任何公寓。因此,我必须定义一种使预订公寓不可用的方法,我定义了一个生成随机数的函数,并且我添加了一个值为“available”的字符串,因此每次它将记录保存到文件中,在id旁边,您都可以看到可用的字符串,如下所示:C++ 更改二进制文件中的字符串,c++,C++,我正在开发一个系统,在这个系统中,您可以添加公寓的详细信息,然后客户可以查看列表并预订任何公寓。因此,我必须定义一种使预订公寓不可用的方法,我定义了一个生成随机数的函数,并且我添加了一个值为“available”的字符串,因此每次它将记录保存到文件中,在id旁边,您都可以看到可用的字符串,如下所示: string available = " : available"; cout << "Auto-Generated ID:" << randomNum(
string available = " : available";
cout << "Auto-Generated ID:" << randomNum() << endl << endl;
auto_id = to_string(randomNum()) + available;
这就是我调用函数的方式
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);
我是业余爱好者,这是我在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)
}
if(\u State==ios\u base::goodbit
&&_Ostr.rdbuf()->sputn(_Str.c_Str(),(streamsize)_Size)
!=(streamsize)\u Size)//打断后,此行旁边会出现一个箭头。。。。
_状态|=ios_base::badbit;
其他的
对于(;0<\u Pad;--\u Pad)//右侧的Pad
如果(_Traits::eq_int_type)(_Traits::eof(),
_ost.rdbuf()->sputc(_ost.fill()))
{//插入失败,退出
_状态|=ios_base::badbit;
打破
}
_横向宽度(0);
_渔获量
}
我认为sizeof(可用)-1
应该可用。size()
。sizeof()
运算符给出的是对象的大小,而不是对象包含指针指向的字符串的大小。首先放置一个cout并在调试器下运行它。您似乎正在使用Visual Studio进行编程,Visual Studio可以说是该平台上最好的用户模式程序调试器。使用它。我们需要知道是哪些代码行导致了问题。Visual Studio中有一个名为调用堆栈的调试窗口。它将显示执行中断时进行的函数调用的顺序。您对该问题的编辑为我们提供了STL代码,但该代码帮助不大。
Unhandled exception at 0x0FCB7EA6 (msvcp120d.dll) in Assignment.exe: 0xC0000005: Access violation reading location 0x006FEF28.
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)
}