将字符串转换为整数。为啥会出现这个错误?我想将 ID(字符串)更改为 IC(整数)。两者都是数组。顺便说一句,我还是个初学者

Posted

技术标签:

【中文标题】将字符串转换为整数。为啥会出现这个错误?我想将 ID(字符串)更改为 IC(整数)。两者都是数组。顺便说一句,我还是个初学者【英文标题】:Converting String to Integer. Why this error? I want to change the ID (string) to IC (integer). Both are arrays. I'm still a beginner by the way将字符串转换为整数。为什么会出现这个错误?我想将 ID(字符串)更改为 IC(整数)。两者都是数组。顺便说一句,我还是个初学者 【发布时间】:2018-03-01 09:09:34 【问题描述】:
#include <iostream>
#include <stdlib.h>
#include <cstring>

using namespace std;

int main()

   string ID[]="620301025123"; //ID array

   long long int IC[10]=0; //IC array

   // loop to change the ID string to Array IC. I will want to increase the size 
   // of ID array, later on, to put in new data but for now, I'm just using one data
   // which is "620301025123" first.

   for(int i = 0; i < 10; ++i)
     IC[i]= atoll(ID[i].c_str());
   
 

我得到的错误是:

14 29 C:\Users\ASUS\Desktop\Assign1\Untitled3.cpp [警告] 扩展初始化列表仅适用于 -std=c++11 或 -std=gnu++11*/

【问题讨论】:

请提供minimal reproducible example,获取the tour 并阅读the help page。欢迎来到 SO。 1) 您是否按照错误提示在启用 C++11 支持的情况下进行编译? 2) 这样一个for 循环,ID[i].c_str()invokes 未定义的行为,由于超出数组ID 的范围,因为它只包含一个元素。 3) 考虑从good C++ book 学习而不是随机编码。 你为什么用c_str() 我期待这个:IC[i]= atoll(ID[i]); 注意:string ID[] = "620301025123" ; 声明了一个 string 数组,其中只包含一个字符串 ("620301025123")。因此ID[1] 不正确,会导致未定义的行为(谷歌该术语)。请告诉我们您希望 ICfor 循环之后包含的内容。 【参考方案1】:

首先:它是 C++ 中的#include &lt;cstdlib&gt;

那么,你的问题似乎不是转换为long long,而是字符串的初始化,至少警告(不是错误)是这么说的。您正在使用扩展的初始化程序列表,它们是 C++11,但尚未激活 C++11 支持。

警告告诉你如何激活它。

最后:不要养成使用using namespace 的习惯,至少不要在全球范围内使用。您可以在特定符号上使用using,但即便如此,我也只会在本地执行此操作,而不是全局执行。

【讨论】:

很可能还有更多问题,请参阅我对上述问题的评论。

以上是关于将字符串转换为整数。为啥会出现这个错误?我想将 ID(字符串)更改为 IC(整数)。两者都是数组。顺便说一句,我还是个初学者的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符从 int 转换为“出现”在控制台中?

python - 为啥在python中使用int()将二进制转换为整数会在将2作为基本参数时给出错误

如何将 Google 输入的数字字符串转换为整数作为存储到 MySql DB 中?

替代 itoa() 将整数转换为字符串 C++? [复制]

通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]

将整数列表转换为字符串