2017-04-05 5 views
0

私は、行に入力されたすべての値を取り込み、カンマを無視してベクトルに格納する関数を取得しようとしています。私は最後の入力を落としているようです

次に、それらを印刷するためのベクターが必要です。私はC++の初心者です。いくつかのチュートリアルを通してダイビングした後、いくつかの小さなトリックを学び、あらゆるバグを取り除くことができました。

最後の番号が表示されません。 Enterを押す前の最後の番号を除いて、すべてを表示します。

最後のものを動作させる方法はありますか、または行全体を文字列に保存してその方法で検索する必要がありますか?

これは私のコードです:

#include "stdafx.h" 
#include<math.h> 
#include<iostream> 
#include<vector> 
#include<stdlib.h> 
using namespace std; 
void fillVector(vector<int>&); 
void printVector(const vector<int>&); 

int main() 
{ 

    vector<int>myVector; 
    fillVector(myVector); 
    printVector(myVector); 
    system("PAUSE"); 
    return 0; 
} 

void fillVector(vector<int>& newMyVector) { 
    cout << "Please type in a series of numbers separated by a comma, and press Enter when done." << endl; 
    int input; 
    cin >> input; 
    while (cin.peek()!= '\n') { 
     newMyVector.push_back(input); 
     cin.ignore(numeric_limits<streamsize>::max(), ','); 
     cin >> input; 
    } 
    cout << endl; 
} 

void printVector(const vector<int>& myNewVector) { 
    for (unsigned int i = 0; i < myNewVector.size(); i++){ 
     if (i <= myNewVector.size() - 2) { 
      cout << myNewVector[i] << ", "; 
     } 
     else { 
      cout << myNewVector[i]<<endl; 
     } 
    } 
} 

は、私はC++に非常に新しいです、そしてループが最後の番号を取得し、ベクターに挿入してしまうかのようにそれが表示されますが、それをスキップしているようです。

助けを借りていただければ幸いです。

ありがとうございました!

答えて

0

push_backは、最後にinputと呼ばれることはありません。これは、新しいinputwhileループの間に読み取られますが、最後にのみ読み込まれるためです。最後にwhileをチェックして、ループをdoにすることで動作させることができます。または、ループの開始時にinputを読んでからpush_backを読んでください。

do { 
    cin >> input; 
    newMyVector.push_back(input); 
    cin.ignore(numeric_limits<streamsize>::max(), ','); 
} while(cin.peek() != '\n'); 

それとも

void fillVector(vector<int>& newMyVector) { 
cout << "Please type in a series of numbers separated by a comma, and press Enter when done." << endl; 
int input; 
while (cin.peek()!= '\n') { 
    cin >> input;   
    newMyVector.push_back(input); 
    cin.ignore(numeric_limits<streamsize>::max(), ','); 
} 
cout << endl; 
} 

これらの両方は、基本的に同じです。

+0

ありがとうございました。私はそれがおそらく単純なものであることは分かっていました。私はそれが働いて、今私が行う必要があるのは、最後にコンマを追加するように命令を編集することです、それは検索を停止しますが、今私は前進する場所があります。再度、感謝します! –

関連する問題