我正在學校項目上工作,而且我有點卡住了。我需要使用是否整數cin
輸入集(因此在數量或在命令提示符下鍵入我能管)在任何下列格式:使用cin讀取任意空格的逗號分隔整數對(x,y)
3,4
2,7
7,1
或選項2,
3,4 2,7
7,1
或選項3,
3,4 2,7 7,1
也有可能是,
後面輸入一個空格,像3, 4 2, 7 7, 1
使用此信息,我必須將該集合的第一個數字放入1個矢量中,並將第二個數字(a在,
中)插入到第二個向量中。
目前,我下面的幾乎完全是我需要它做的,但是當使用選項2或3讀取文件時,當std::stoi()
達到一個空格時,出現調試錯誤(abort()has been稱爲)
我試過使用stringstream,但我似乎無法正確使用它,我需要什麼。
我能做些什麼來解決這個問題?
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int main() {
string input;
// Create the 2 vectors
vector<int> inputVector;
vector<int> inputVector2;
// Read until end of file OR ^Z
while (cin >> input) {
// Grab the first digit, use stoi to turn it into an int
inputVector.push_back(stoi(input));
// Use substr and find to find the second string and turn it into a string as well.
inputVector2.push_back(stoi(input.substr(input.find(',') + 1, input.length())));
}
// Print out both of the vectors to see if they were filled correctly...
cout << "Vector 1 Contains..." << endl;
for (int i = 0; i < inputVector.size(); i++) {
cout << inputVector[i] << ", ";
}
cout << endl;
cout << endl << "Vector 2 Contains..." << endl;
for (int i = 0; i < inputVector2.size(); i++) {
cout << inputVector2[i] << ", ";
}
cout << endl;
}
請採取[旅遊](http://stackoverflow.com/tour)並閱讀[幫助頁](http://stackoverflow.com/help)。這裏是[The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – 2017-02-09 02:00:56
它可以是'3,7'(有空格),還是一定是'3,7',沒有空格? – Justin
@Justin無論是或。只要集合中的一個整數進入vector1,另一個進入vector2,就可以有空間。它應該能夠處理任意數量的集合 – KappaPride