如何将值存储在char中
how values are stored in char
我正在将值作为字符串添加到组合框中。下面是我的代码。
平台Windows XP和我正在使用Microsoft Visual Studio 2003
语言C++
遇到错误->"运行时检查失败#2-变量"缓冲区"周围的堆栈已损坏。"
如果我把缓冲区的大小增加到4以上,那么我就不会得到这个错误。
我的问题与如何修复该错误无关,但我想知道如果缓冲区大小=2,为什么会出现此错误。
根据我的逻辑,我给出了缓冲区大小=2,因为char[0]将存储char[1]=null终止字符的值。
现在,由于char可以存储从0到255的值,我认为这应该是可以的,因为我插入的值是从1到63,然后是从183到200。
CComboBox m_select_combo;
const unsigned int max_num_of_values = 63;
m_select_combo.AddString( "ALL" );
for( unsigned int i = 1; i <= max_num_of_values ; ++i )
{
char buffer[2];
std::string prn_select_c = itoa( i, buffer, 10 );
m_select_combo.AddString( prn_select_c.c_str() );
}
const unsigned int max_num_of_high_sats = 202 ;
for( unsigned int i = 183; i <= max_num_of_high_sats ; ++i )
{
char buffer[2];
std::string prn_select_c = itoa( i, buffer, 10 );
m_select_combo.AddString( prn_select_c.c_str() );
}
你们能给我一个我不理解的想法吗?
itoa()
零终止其输出,因此当您调用itoa(63, char[2], 10)
时,它会写入三个字符6
、3
和终止的