2013-05-05 143 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