Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更改二进制文件中的字符串_C++ - Fatal编程技术网

C++ 更改二进制文件中的字符串

C++ 更改二进制文件中的字符串,c++,C++,我正在开发一个系统,在这个系统中,您可以添加公寓的详细信息,然后客户可以查看列表并预订任何公寓。因此,我必须定义一种使预订公寓不可用的方法,我定义了一个生成随机数的函数,并且我添加了一个值为“available”的字符串,因此每次它将记录保存到文件中,在id旁边,您都可以看到可用的字符串,如下所示: string available = " : available"; cout << "Auto-Generated ID:" << randomNum(

我正在开发一个系统,在这个系统中,您可以添加公寓的详细信息,然后客户可以查看列表并预订任何公寓。因此,我必须定义一种使预订公寓不可用的方法,我定义了一个生成随机数的函数,并且我添加了一个值为“available”的字符串,因此每次它将记录保存到文件中,在id旁边,您都可以看到可用的字符串,如下所示:

    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)
        }