1

在这个问题中我面临一个问题:“编写一个 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;


}
4

3 回答 3

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 ;
}
于 2013-03-08T19:12:44.240 回答
0

一次只需要一个,您需要添加更多调用来转换,如下所示:

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

C++faq 对此有一个很好的部分

无需大的修改,如果你需要使用指针将数字直接放入数组中,你可以这样做:

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 ;
于 2013-03-08T18:34:08.517 回答
0

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



numbers.find_first_of(" ");numbers.end()

于 2013-03-08T18:37:29.483 回答