C++ 将每个数字从保存在字符串中的数字转换为整数数组

C++ 将每个数字从保存在字符串中的数字转换为整数数组,c++,string,type-conversion,atoi,C++,String,Type Conversion,Atoi,我在DFA上写这个项目,我想将保存为字符串的整数的每个数字保存并转换为int数组。这是函数的代码: int l=final_states.size(); int*temp_最终版本; 最终温度=新整数[l]; 对于(int i=0;i函数atoi()需要一个const char*,您不能调用.c_str(),结果是.at(i),它实际上是一个char&值 把你的作业线改成 temp_final[i] = int(final_states[i]) - int('0'); 尽管您也可以在将其放

我在DFA上写这个项目,我想将保存为字符串的整数的每个数字保存并转换为int数组。这是函数的代码:


int l=final_states.size();
int*temp_最终版本;
最终温度=新整数[l];
对于(int i=0;i函数
atoi()
需要一个
const char*
,您不能调用
.c_str()
,结果是
.at(i)
,它实际上是一个
char&

把你的作业线改成

 temp_final[i] = int(final_states[i]) - int('0');
尽管您也可以在将其放入结果数组之前检查是否确实:

 if(std::isdigit(final_states[i])) {
     temp_final[i] = int(final_states[i]) - int('0');
 }
 else {
     // Skip, or throw error ...
 }
c_str()
不起作用,因为在(i)
调用
后,您得到的是字符而不是字符串。我建议您使用:

temp_final[i]=final_states.at(i) - '0';

这里,你用一个ASCII码作为字符符号,当你减去一个
'0'
你会得到一个你需要的整数,因为所有的数字都是按ASCII顺序排列的。

at
返回一个
char
。你正在调用
c_str
。也许你只是想做一个
std::transform
>@chris我从未使用过std::transform,但如果我给它temp_final[I]=atoi(final_states.at(I));这是合乎逻辑的,它给了我这个错误*在'const'.*
atoi
接受字符串之前预期的主表达式。向它传递字符无效。无论如何,我建议尝试学习如何使用预制算法,因为它们使您的意图非常清楚,没有bug,并且经过严格的性能测试n苍蝇不是这些。
temp_final[i]=final_states.at(i) - '0';