2013-02-08 2 views
-2

문자열 매개 변수를 허용하는 함수가 있고 문자열로 변환 한 다음이 함수를 사용하여이 코드를 사용했지만 ostringstream은 I/오 그것은 작동하지 않습니다.함수 매개 변수에 대한 문자열을 정수로 변환합니다.

ostringstream ostr; 
while (.....) 
{ 
regnum++; 
ostr<<regnum; 
grph.addlastname(ostr.str()); 
} 

예를 들어 내가 어떻게해야 12345 대신 5의 함수에 전달할?

+0

귀하는 문제가 무엇인지 알려주지 않았습니다. –

+0

이미 수십개의 질문이 있습니다. http://stackoverflow.com/questions/5590381/easiest-way-to-convert-int-to-string-in-c – djechlin

+1

std :: to_string, 부스트 lexical_cast, ... –

답변

5

사실입니다. "비슷한 방법으로 해결할 수있는 가장 좋은 방법은 무엇입니까?" 그러나 나는 이것이 "왜 작동하지 않는가?"라는 질문에 대한 대답에서 OP를 배우기위한 무언가가 있다고 생각합니다.

따라서

:

귀하의 stringstream 내부 상태를 가지고 있으며, 루프 동안 당신은 항상 새로운 자리를 추가 -하지만 이전의 것들 스트림 여전히! stringstream을 루프의 범위 로컬로 설정하여이를 해결할 수 있습니다. 즉, 루프 외부에서 루프가 아닌 루프 내부에서이를 선언 할 수 있습니다.

(. std::to_string는하지만, 여전히이 특정 문제에 대한 더 나은 솔루션)

+0

좋은 지점. 질문을 전혀 파싱하지 못했습니다. –

+0

네 첫 의견은 효과가 있었어! – EYx

0

모든 것이 한 가지를 제외하고 괜찮 은 다음을 참조하십시오

ostringstream ostr; 
while (.....) 
{ 
regnum++; 
ostr<<regnum; 
grph.addlastname(ostr.str()); 
} 

귀하 그동안 밖에서 ostr를 선언, 첫 번째

시간이 지나면 ostr에 '1'을 추가합니다. 두 번째로 ostringstream 변수이므로 '2'가 추가되어 문자열이 '12'가됩니다.

Solution : ostringstream ost 선언 r, while while, std :: to_string을 사용하거나 while이 끝날 때마다 ostr.clear()를 수행하십시오. (최선의 방법은 귀하의 의사에게 귀하의 의사를 선언하는 것입니다)

관련 문제