2013-12-08 162 views
0

我有一个包含什么都在用户输入如何把一个字符串转换成整数数组C++

string userstr = ""; 
cout << "Please enter a string "; 
getline (cin, userstr); 

然后将字符串存储在userstr,我则希望字符串存​​储在一个字符串整型数组,其中每个字符是数组中的一个不同元素。我创建了如下的动态数组:

int* myarray = new int[sizeof(userstr)]; 

但是,如何让我的字符串进入该数组?

+0

-1你是什么意思。 –

+2

'sizeof(userstr)'不同于'userstr.length()'或'userstr.size()'。 – chris

+0

可能重复的[C++字符串长度?](http://stackoverflow.com/questions/905355/c-string-length) –

回答

1

可以使用[]操作,这将参考返回一个字符字符串中的访问每一个元素。然后,您可以扣除char'0'的int值,您将得到正确的int表示。

for(int i=0;i<userstr.length();i++){ 
    myarray[i] = userstr[i] - '0'; 
} 
+0

当我这样做,并显示myarray我只是得到随机数字:例如,如果我输入“嘿,我的名字是”输出是006B4D30 – user3080755

+0

我假设输入是'假设'是一个整数。如果你想存储一个字符串作为一个整数数组,那么你正在做的是存储代表每个字符的整数 - 这是你正在尝试做什么?如果是这种情况,我还不清楚 – rami1988

+0

对不起,这是我正在尝试做的,它是一个很长的一天o.O – user3080755

4
int* myarray = new int[ userstr.size() ]; 

std::copy(usestr.begin(), userstr.end(), myarray); 

终止零不会附加到数组。如果你需要它,你应该分配多个元素的数组,并且自己放置终止零点。

+0

当我这样做,我得到这个错误:Windows已触发cw2.exe断点。 这可能是由于堆的损坏,这表明cw2.exe或其中已加载的任何DLL错误。 这也可能是由于用户在cw2.exe具有焦点时按下F12。 输出窗口可能有更多诊断信息。 – user3080755

+0

+1。当然,我们也可以用一种当超出范围时自动释放内存的方式声明'myarray'。 I.e'int myarray [userstr.size()];' – enhzflep

+0

但userstr不是常量,它给了我一个错误,说表达式必须有一个常量值 – user3080755

-1

这里是一个办法做到这一点

for(int i=0;i<userstr.length();i++){ 
    myarray[i] = userstr[i]; 
} 
0

您只需简单地使用isstringstream将字符串转换为int如下

istringstream istringName(intString); 
istringName >> real_int_val; 

现在却奇迹般地成为含有字符串 所有数字是INT但是我不明白为什么你会不cin它作为一个int在第一位?

相关问题