2013-05-05 187 views
1

我對編碼相當陌生,我希望有人能幫助我嗎?我試圖讀取一行空格分隔的整數,並將它們解析爲(最終到一個鏈表中)一個向量。將字符串解析爲int

所以一旦我有一個整數向量,有STL向量的迭代器,但我怎麼能遍歷鏈接列表中不在STL中的節點?

#include <cstdlib> 
#include <iostream> 
#include <string> 
#include <sstream> 
#include <vector> 

using namespace std; 

int main(int argc, char** argv) {  
    cout << "Enter some integers, space delimited:\n"; 
    string someString; 
    getline(cin, someString); 

    istringstream stringStream(someString); 
    vector<string> parsedString; 
    char splitToken = ' '; 

    //read throguh the stream 
    while(!stringstream.eof()){ 
     string subString; 
     getline(stringStream, subString, splitToken); 
     if(subString != ""){ 
     parsedString.push_back(subString); 
     } 
    } 

    return EXIT_SUCCESS; 
} 
+0

提醒這個後來自己:'的std :: istream_iterator 第一(字符串流),最後的; std :: vector parsedString(first,last);'將字符串拆分爲一個容器(儘管我不認爲這就是你真正想要做的)。在這個網站的流行問題中還有其他方法。 – chris 2013-05-05 04:17:20

+0

爲什麼不只是'int a; while(cin >> a){// do something}' – gongzhitaao 2013-05-05 04:17:26

+0

你想自己實現鏈表嗎? – gongzhitaao 2013-05-05 04:32:52

回答

0

stringstream可以自動處理分隔符是這樣的:

cout << "Enter some integers, space delimited:\n"; 
string someString; 
getline(cin, someString); 

istringstream stringStream(someString); 
vector<int> integers; 
int n; 
while (stringStream >> n) 
    integers.push_back(n); 
+0

我不需要使用getline將鍵盤輸入捕獲到someString中嗎? – StillLearningToCode 2013-05-05 04:36:38

+0

@MichaelMenard是的 - 我會編輯,使其更清晰 – nullptr 2013-05-05 04:38:56

+0

好吧,所以現在我有矢量,我知道如何做一個STL向量迭代器,但如果我寫一個鏈表類,沒有STL迭代器(我不能寫一個正確的?)。你會如何建議我循環鏈表?我有一個爲頭部和當前定義的指針。 – StillLearningToCode 2013-05-05 05:02:16

1

因爲它是空間分隔符,爲什麼不乾脆:

#include <iostream> 
using namespace std; 

int main() { 
    int a; 
    vector<int> v; 
    while (cin >> a) { 
     v.push_back(a); 
    } 

    for (int i = 0; i < v.size(); ++i) { 
     int b = v[i]; 
    } 

    return 0; 
} 

而且順便說一句,ctrl-D或一個非整數輸入,像char,將終止該while

+0

雖然這個例子的工作原理,他的原始代碼採取了一行整數,然後處理它們。這將繼續下去,直到'cin'停止整數 – nullptr 2013-05-05 04:19:39

+0

哈哈,你們讓它看起來很容易。我一直試圖讓一個簡單的辛工作... – StillLearningToCode 2013-05-05 04:24:01

+0

@MichaelMenard看到更新。大多數時候,你可以把它當作一個數組。當然,你可以使用'iterator'。 – gongzhitaao 2013-05-05 04:28:11