在这个问题上我遇到了一个问题: “编写一个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 :(得分: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 ;
}