将字符串转换为整数。为啥会出现这个错误?我想将 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]
不正确,会导致未定义的行为(谷歌该术语)。请告诉我们您希望 IC
在 for
循环之后包含的内容。
【参考方案1】:
首先:它是 C++ 中的#include <cstdlib>
。
那么,你的问题似乎不是转换为long long
,而是字符串的初始化,至少警告(不是错误)是这么说的。您正在使用扩展的初始化程序列表,它们是 C++11,但尚未激活 C++11 支持。
警告告诉你如何激活它。
最后:不要养成使用using namespace
的习惯,至少不要在全球范围内使用。您可以在特定符号上使用using
,但即便如此,我也只会在本地执行此操作,而不是全局执行。
【讨论】:
很可能还有更多问题,请参阅我对上述问题的评论。以上是关于将字符串转换为整数。为啥会出现这个错误?我想将 ID(字符串)更改为 IC(整数)。两者都是数组。顺便说一句,我还是个初学者的主要内容,如果未能解决你的问题,请参考以下文章
python - 为啥在python中使用int()将二进制转换为整数会在将2作为基本参数时给出错误
如何将 Google 输入的数字字符串转换为整数作为存储到 MySql DB 中?