2013-05-05 5 views
1

저는 코딩에 익숙하지 않고 누군가 나를 도울 수 있기를 바랬습니다. 나는 공백으로 구분 된 정수의 라인을 읽으려고 노력하고 있으며 (궁극적으로 연결된리스트로) 벡터를 파싱한다.문자열을 int로 구문 분석

내가 int의 벡터를 가지면, STL 벡터의 반복자가 있지만, STL이 아닌 링크리스트의 노드를 반복 할 수 있습니까?

#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; 
} 

그리고 BTW, ctrl-D 또는 정수가 아닌 입력, char처럼,이 while을 종료합니다 : 그냥 왜

#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

이 이후의 자신을 생각 나게 :'표준 : istream_iterator , 마지막으로 (이제 stringstream) 첫째; std :: vector parsedString (첫 번째, 마지막);'문자열을 컨테이너로 분할하기위한 것입니다. (실제로는 그렇게 생각하지 않았습니다). 이 사이트의 인기있는 질문에는 다른 방법이 있습니다. – chris

+0

왜'int a; while (cin >> a) {// do something}' – gongzhitaao

+0

당신이 직접 연결된 목록을 구현하고 싶습니까? – gongzhitaao

답변

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

나는 여전히 getString을 사용하여 키보드 입력을 someString으로 캡처해야합니까? – StillLearningToCode

+0

@MichaelMenard 예 - 명확하게 편집합니다 – nullptr

+0

이제 벡터가 생겼습니다. STL 벡터에 대한 반복기를 만드는 방법을 알고 있지만 링크 된 목록 클래스를 작성하면 그 STL iterator (그리고 내가 옳지 않아 하나 쓰기?). 연결된 목록을 통해 내가 어떻게 반복 할 것을 제안 하시겠습니까? 나는 머리와 현재에 대한 포인터를 정의했다. – StillLearningToCode

1

은 공간 구분 기호입니다 때문에. 이 같은

+0

이 예제가 작동하는 동안 원래 코드는 정수의 라인을 취하여 처리했습니다 . 이것은'cin'이 정수를주는 것을 멈출 때까지 계속 될 것입니다. – nullptr

+0

lol 여러분, 그렇게 쉽게 보이게합니다. 나는 일하는 단순한 cin을 얻으려고 노력해 왔습니다. – StillLearningToCode

+0

@MichaelMenard 업데이트 됨. 대부분의 경우, 배열로 처리 할 수 ​​있습니다. 그리고 물론, 당신은'iterator'를 사용할 수 있습니다. – gongzhitaao

관련 문제