2013-03-08 111 views
1

在这个问题中我面临一个问题: “编写一个C++控制台程序来接受来自键盘的五个整数值,并用空格分隔。使用指针将这五个值存储在一个数组中,然后在屏幕上打印数组的元素。“C++程序接受多个输入并使用指针输入数组

我试着做一个字符串变量,并接受来自用户的5个整数,然后将其转换为整数,但它不能很好地工作,因为它不会在空间之后采用数字。

任何帮助家伙?

#include<iostream> 
#include<string> 
#include<sstream> 

using namespace std; 

int main(){ 
    string numbers; 
    getline(cin, numbers); 
    int arr[5]; 
    int *ptr; 
    int values; 
    stringstream convert(numbers); 
    convert >> values; 
    cout << values; 


} 
+0

我会亲自用字符串流获得的每一整数及使用类似'* PTR = thatInt;'纳入指针。 – chris 2013-03-08 18:34:10

回答

0

这将只需要一次一个,你需要添加更多的调用,像这样转换:

stringstream convert(numbers); 
    convert >> values; 
    cout << values; 
    convert >> values; 
    cout << " " << values; 
    convert >> values; 
    cout << " " << values; 

C++的常见问题有一个很好的section

如果没有大的修改,如果你需要直接使用指针把号码存入数组,你可以这样做:

int *ptr = arr ; 

convert >> *ptr++ ; 
convert >> *ptr++; 
convert >> *ptr++; 
convert >> *ptr++; 
convert >> *ptr++; 

for(unsigned int i = 0; i < 5; ++i) 
{ 
    cout << arr[i] << " " ; 
} 
cout << std::endl ; 
+0

但我需要把它放在一个数组中,使用指针 – 2013-03-08 18:54:54

+0

@AhmedSherif添加代码以使用指针插入到数组中 – 2013-03-08 19:03:14

0

我的数字变量是字符串,则可以使用搜索第一个非空格字符numbers.find_first_not_of(" ");
和第一个空格字符numbers.find_first_of(" ");
然后使用substr(.....)
创建一个子集现在将substr放在另一个字符串变量中。
现在将子字符串转换为int。
重复您需要的次数的步骤。即将整个代码放在while循环中。
终止循环,只要numbers.find_first_of(" ");回报numbers.end()

+0

对不起,我不能很好地解释它,你能用代码解释它吗? – 2013-03-08 18:50:23

0

我成功地使它

#include<iostream> 
#include<string> 
#include<sstream> 
using namespace std; 

int main(){ 
int arr[5]; 
string number; 
cout << "Please enter 5 integers separeted with spaces " << endl; 
getline(cin, number); 
int *ptr = arr ; 
stringstream convert(number); 
convert >> *ptr++ ; 
convert >> *ptr++; 
convert >> *ptr++; 
convert >> *ptr++; 
convert >> *ptr++; 

for( int i = 0; i < 5; ++i) 
{ 
    cout << arr[i] << " " ; 
} 
cout << std::endl ; 
}