我正在尝试将控制台中的整数读入我的整数向量中。我想继续从一行中读取整数,直到用户单击输入。我一直在尝试使用 getline 和 stringstream,但在我按下回车后它一直在寻找输入。有什么解决办法吗?
高级描述:该程序从控制台读取数字并将它们推送到向量的后面。然后对向量进行排序,并创建两个指针来指向前后。然后,用户可以输入一个总和,然后程序将通过取两个指针的总和在线性时间内搜索。然后指针将继续向一个方向移动,直到它们找到这样的总和或确定不存在这样的总和。
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
using namespace std;
int findSum(vector<int> tempVec, int sum)
{
int i;
cout << "Sorted sequence is:";
for ( i = 0; i < tempVec.size(); i++ )
cout << " " << tempVec[i];
cout << endl;
int *ptr1 = &tempVec[0];
cout << "ptr1 points to: " << *ptr1 << endl;
int *ptr2 = &tempVec[tempVec.size() - 1];
cout << "ptr2 points to: " << *ptr2 << endl;
int count = 0;
while ( ptr1 != ptr2 )
{
if ( (*(ptr1) + *(ptr2)) == sum )
{
cout << *(ptr1) << " + " << *(ptr2) << " = " << sum;
cout << "!" << endl;
return count;
}
if ( (*(ptr1) + *(ptr2)) < sum)
{
cout << *(ptr1) << " + " << *(ptr2) << " != " << sum;
ptr1 = ptr1 + 1;
cout << ". ptr1 moved to: " << *ptr1 << endl;
count++;
}
else
{
cout << *(ptr1) << " + " << *(ptr2) << " != " << sum;
ptr2 = ptr2 - 1;
cout << ". ptr2 moved to: " << *ptr2 << endl;
count++;
}
}
return -1;
}
int main()
{
int ValSum;
cout << "Choose a sum to search for: ";
cin >> ValSum;
vector<int> sumVector;
int input;
cout << "Choose a sequence to search from: ";
while ( cin >> input != "\n" )
{
//getline(cin, input);
if ( cin == '\0' )
break;
sumVector.push_back(input);
}
sort(sumVector.begin(), sumVector.end());
int count = findSum(sumVector,ValSum);
if ( count == -1 )
cout << "\nThe sum " << ValSum << " was NOT found!" << endl;
else
{
cout << "\nThe sum " << ValSum << " was found!" << endl;
cout << count + 1 << " comparisons were made." << endl;
}
sumVector.clear();
}