【发布时间】:2014-05-21 20:31:13
【问题描述】:
我正在 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'|。
所以如果你能告诉我如何进行这种转换和保存工作,那就太好了。
【问题讨论】:
-
at返回一个char。你在那个char上打电话给c_str。也许你只是想做一个std::transform。 -
@chris 我从来没有用过std::transform,但是如果我给它temp_final[i]=atoi(final_states.at(i)); 这是合乎逻辑的,它给了我这个错误 * 'const' 之前的预期主表达式|*
-
atoi接受一个字符串。将字符传递给它不起作用。无论如何,我建议尝试学习如何使用预制算法,因为它们使您的意图非常清晰,没有错误,并且经过了不懈的性能测试。动态编写的循环不是这些。
标签: c++ string type-conversion atoi