2011-10-17 168 views
1

我正在创建一个控制台程序,要求用户输入0到100之间的整数,然后输出每个数字以及输入了多少次。用户输入的每个数字用空格分隔,输入0时输入结束。到目前为止,我正在使用cin.getline将数字存储在字符数组中。这限制了操作数字的能力,因为它们以ascii字符存储。如果用户键入10,我希望能够将10作为单个整数存储到新阵列中,例如s[i]=converted_number将字符数组转换为整数

+0

问题是? – thumbmunkeys

+0

如何将字符数组中的元素作为数字并将其转换为整数。我所需要的只是一种方法来获取像s [0]这样的数组指针,并将它的值(如'0')转换为0的整数并将其存储在另一个数组中。抱歉没有具体。 – user999861

回答

4

而不是使用cin.getline简单地做:

int input; 
while(cin >> input, input != 0) 
{ 
    ...do computations or store it somewhere... 
} 

,将让你在整数的形式输入。

+0

非常真实。我开始那样。但是cin停在空间。 – user999861

+0

@ user999861:这就是为什么你多次调用它,每次提取一个不同的(空格分隔的)整数值。当输入为0时,您打破循环。 –

+0

好吧,我明白你要去哪里。我错过了它的循环阅读。生病看看我是否有用。 – user999861

1

我不确定这是你在找什么,但是增强对此有好处。它被称为lexical_cast。见http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm

+0

我一直在阅读帖子后提升作为解决方案。我会跳过这一点,但我是一名学生,我正在为一个班级做这件事。我不知道这将被允许。我欣赏输入寿命。 – user999861

+0

Boost是C++库(不包括STL),我不知道很多C++软件不使用它,为什么它不应该被允许?除此之外,还有'itoa()'(不是C++标准的一部分),并使用类似K-ballo类型安全方式的'cin'。 – Florian

+0

@krynr Boost可能是C++库,但是当涉及到学习/教授语言本身时,大部分Boost与std ::本身的很多部分是相反的。它不会产生解决问题的正确本能。这应该从OP中显而易见。 –