我有一个代码,其中字符数组由整数填充(转换为char数组),并由另一个函数读取,该函数将其重新转换回整数.我使用以下函数来转换为char数组:
char data[64];
int a = 10;
std::string str = boost::lexical_cast<std::string>(a);
memcpy(data + 8*k,str.c_str(),sizeof(str.c_str())); //k varies from 0 to 7
Run Code Online (Sandbox Code Playgroud)
并使用以下方法重新转换回字符:
char temp[8];
memcpy(temp,data+8*k,8);
int a = atoi(temp);
Run Code Online (Sandbox Code Playgroud)
这一般工作正常,但是当我尝试将其作为涉及qt(ver 4.7)的项目的一部分时,它编译得很好并且在尝试使用memcpy()读取时给出了分段错误.请注意,分段故障仅在读取循环中发生,而不是在写入数据时发生.我不知道为什么会这样,但我希望通过任何方法完成它.
那么,还有其他任何我可以使用的函数可以接受字符数组,第一位和最后一位并将其转换为整数.然后我根本不必使用memcpy().我想要做的是这样的事情:
new_atoi(data,8*k,8*(k+1)); // k varies from 0 to 7
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我在我的一篇帖子中提出了一个关于替代方案的问题boost::lexical_cast,在许多答复中,我有一个建议stoi作为可行的替代方案。
我决定测试它,令我惊讶的是,这个函数的第二个参数(描述大小的参数)是一个指向size_t类型的指针,而不是实际size_t类型。对此是否有任何合乎逻辑的解释,以及以何种方式拥有指向实际对象的指针比对象本身更好(仅在涉及大小的这种特殊情况下,我不会本能地用指针分配大小)?
链接到 stoi 文档:http : //msdn.microsoft.com/en-us/library/ee404860.aspx