我正在 DFA 上编写这个项目,我想将保存为字符串的整数的每个数字保存并转换为 int 数组。这是负责此操作的函数的代码:
int l=final_states.size();
int* temp_final;
temp_final=new int [l];
for(int i=0;i<l;i++)
{
temp_final[i]=atoi(final_states.at(i).c_str());
}
这给了我以下错误:request for member 'c_str' in '((DFA*)this)->DFA::final_states.std::basic_string<_CharT, _Traits, _Alloc>::at<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)i))', which is of non-class type 'char'|
.
因此,如果您能告诉我如何进行此转换和保存工作,那就太好了。
The atoi()
函数想要一个const char*
,你不能打电话.c_str()
结果是.at(i)
这实际上是一个char&
value.
只需将您的分配行修复为
temp_final[i] = int(final_states[i]) - int('0');
虽然你也可以检查一下你是否真的have a digit there http://en.cppreference.com/w/cpp/string/byte/isdigit,然后将其放入结果数组中:
if(std::isdigit(final_states[i])) {
temp_final[i] = int(final_states[i]) - int('0');
}
else {
// Skip, or throw error ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)