C ++程序接受多个输入并使用指针放入数组

时间:2013-03-08 18:30:28

标签: 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;


}

3 个答案:

答案 0 :(得分:0)

一次只需要一个,你需要添加更多的转换来进行转换:

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

C ++ faq对此有一个很好的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 ;

答案 1 :(得分:0)

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

,就终止循环

答案 2 :(得分: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 ;
}