2012-06-18 4 views
0

당신은 ostream에 넣어 마지막 charactor 밖으로 개체를 얻을 방법이 '는 ","나는 돈 있도록, 마지막에,있을 것이내가 프로그래밍 작업을하고 있어요

vector<Member> members; 
stringstream ss; 
stringstream ss1; 
for (vector<Member>::iterator it = members.begin; it != members.end(); it++){ 
    ss << it->name << ","; 
    if (check(it->id)){ 
     ss1 << it->name << ","; 
    } 
} 

처럼 t 필요, 나는 이것을 ss에서 꺼내고 싶다. 어떻게해야 할까? 내가 이것을 제어하기 위해 몇 가지 varible을 사용할 수 있다는 것을 알았지 만 직접적으로 ss를 조작하는 것이 더 편리 할 것이라고 생각한다. 방법은 친구가 여기 제공 할 수 없다. ss1의 상황을 처리합니다. 어떻게 ss1의 ","를 제어 할 수 있습니까?
과 ostream에 어떤 데이터를 돌려 줄 수는 없지만 istream로 데이터

+0

조건문 만 사용하면됩니다. 나는 당신이 그것을 개울에서 꺼낼 수 있을지 의심 스럽다. (그리고 할 수있다해도, 그것은 단지 주위에있다 : 당신은 무언가를 넣었다. – nhahtdh

+0

''= 'members.begin()'일 때와 같이 첫 번째를 제외한 모든 것에 대한 이름을 출력하기 전에 ","인쇄를 고려하십시오. –

+0

감사합니다. 좋은 방법입니다. 사용 하겠지만 여전히 사용하고 있습니다. 알고 싶으면 마지막 문자를 가져 오기 위해 ss를 조작하는 것이 가능합니다. io 라이브러리 문서를 확인하지만 찾지 못했습니다. – user1462782

답변

1

ostream에를 putback 왜 누군가가 말해 줄 수는 이름함으로써, 출력 스트림이다 : 다시 모든 데이터를 제공하기 위해 설계되지 않았습니다.

vector<Member> members; 
stringstream ss; 
for (vector<Member>::iterator it = members.begin(); it != members.end(); it++) { 
    if (it != members.begin()) ss << ", "; 
    ss << it->name; 
} 
+0

대단히 감사합니다. 나는 당신의 방법을 채택합니다. 당신은 출력 스트림이 어떤 데이터를 되돌려 주도록 고안된 것이 아니라고 생각합니다. iostream에서 어떤 메소드도 찾지 못했습니다. – user1462782

+0

@ user1462782 : strem의 아이디어는 make 후에 값을 전송하는 * 채널 *입니다. 그것은 다른 장소를 향한 텍스트 형식입니다. 그것은 개념적으로 send-mail과 같습니다. 일단 상자에 넣으면 사라지고 더 이상 당신에게 속합니다. 문자열로 향한 스트림이 출력 포트 연결로 지정되면 전송 한 데이터를 어떻게 다시 얻을 수 있습니까? –

+0

감사하지만, 왜 istream에는 스트림에서 추출한 마지막 문자를 putback하는 메소드 putback이 있습니다 – user1462782

0

대신의 마지막 요소를 작성하는 경우 다음의 각 전에 첫 번째와 구분 기호를 쓸 수 확인 :

는 않았더라도, 그러나, 코드가 훨씬 깨끗 간단한 조건을 사용 될 것입니다 요소 :

vector<Member> members; 
stringstream ss; 

vector<Member>::iterator it = members.begin; 
if(it != members.end()){ 
    ss << it->name; 
    for (it++; it != members.end(); it++){ 
     ss << ", " << it->name; 
    } 
} 
관련 문제