2013-03-29 3 views
-5

나는 이런 일이 :숫자를 특정 형식의 문자열 중간에 인쇄하는 방법은 무엇입니까?

count++; 
sprintf(buf, "%d", count); 
char * wyn1 = " <span font='26'><b>buf</b></span>"; 
gtk_label_set_markup(GTK_LABEL(wynik1), wyn1); 

을 있지만 count의 값은 wyn1에 인쇄되지 않습니다.

buf의 값을 wyn1에 인쇄하는 방법은 무엇입니까?

+0

안녕하세요. 귀하의 질문을 편집 한 것은 끔찍한 상태 였기 때문에 (일부 사용자에게서 부정 투표를받는 이유입니다). 앞으로 이런 상황이 발생하지 않도록 [FAQ] (http://stackoverflow.com/faq)와 [About page] (http://stackoverflow.com/about)를 읽어보십시오. – LihO

답변

1

<span font='26'><b> = 19 자
</b></span> = 11 자
'\0' = 1 자
count 이상 3 자리 숫자를 필요로하지 않습니다 말할 수 있습니다. 그런 다음 그냥 (buf 생략 할 수있다) 그 형식 wyn1 변수에 직접 인쇄 할 수 있습니다 :

char * wyn1 = malloc(19 + 3 + 11 + 1); 
sprintf(wyn1, "<span font='26'><b>%3d</b></span>", count); 

을하지만 실제로 로 태그되어 있기 때문에, 당신은 단순히 사용해야 std::ostringstream :

std::ostringstream os; 
os << "<span font='26'><b>" << count << "</b></span>"; 

및 그 후 os.str().c_str()은 이전 코드에서 wyn1처럼 사용할 수 있지만 훨씬 더 좋지만이 C 문자열의 수명은 스트림에서 검색 한 std::string 개체의 임시 복사본에 연결되므로 메모리를 사용할 필요가 없습니다. 너 자신에 대한 관리.

+0

@ user2141238 : 내 첫 번째 체크 수정 : http://stackoverflow.com/revisions/15702421/1 – LihO

관련 문제