首页 > 解决方案 > 为什么 stoi/atoi 会为我提供编译器错误?

问题描述

所以我试图将一个字符串(由一个数字组成)转换为数字并将它们逐个数字地插入到链表中。

但是,当我尝试它时,我不断收到编译器错误。

我尝试使用atoiand atoi.c_str()orstoi但似乎没有任何效果。

string s = to_string(number_sum);

for (int i = 0; i < s.size(); i++) {
     list->val = atoi(s[i].c_str);
     list = list->next;
}

其中 list 是我定义的链表,并且有一个 int val 来保存我的号码。

因此,如果s = 12345,我希望我的链表是:1->2->3->4->5

我也试过stoi(s[i])了,但不太确定错误是什么。

标签: c++stringlinked-listint

解决方案


atoi并将stoi字符串转换为int. 不过,您并没有这样做。您要做的是将字符转换为int. 为此,您只需'0'从字符串中的字符中减去即可将该字符作为int. 这让你的代码看起来像

string s = to_string(number_sum);

for (int i = 0; i < s.size(); i++) {
     list->val = s[i] - '0';
     list = list->next;
}

推荐阅读