2012-03-27 2 views
2

저는 파이썬에서 오는 C++에 다소 익숙합니다. 필자가 정말로 놓친 기능 중 하나는 문자열 형식 연산자입니다. 필자는 printf() 함수에서 사용할 수있는 예제를 많이 보았지만 때로는 문자열 변수의 자리 표시자를 대신 사용하는 것이 편리합니다.문자열 형식 연산자로 C++ 문자열 대체

... 
stmt = 'INSERT INTO %s(pid, starttime) VALUES("%s","%s")' % ('pids', int(p0.pid), episode[0][1]) 
cursor.execute(stmt) 

당신이 C++에서 비슷한 작업을 수행 할 수 있습니다 여기에 mysqldb 모듈을 사용하여 파이썬에서 예입니다. 나는 어떤 인터넷 검색 사례도 찾지 못했다.

+1

과 같은 작업을 수행 할 수 있습니다 - 당신은 SQL 주입에 자신을 열고 있습니다! 귀하의 데이터베이스 API가 제공하는 기능을 사용하여 정규 매개 변수 바인딩을 대신 수행하십시오 ... –

+0

그건 단지 예일뿐입니다. 이 기능을위한 많은 다른 응용 프로그램이 있습니다. – nomadicME

답변

4

Boost format library을 확인하십시오.

에게 그것은 그렇게하지 마십시오

str(format("writing %s, x=%s : %d-th step \n") % "toto" % 40.23 % 50) 
4

많은 문자열 조각과 변수 중에서 하나의 문자열을 작성하고 싶습니까?

int someInt = 10; 
std::wstringstream wss; 
wss << L"Some string stuff and then " << someInt << L" which was an int" << std::endl; 

그러면 스트림 스트림의 내용을 다른 형식으로 변환 할 수 있습니다. C 문자열을 얻으려면이 호출이 wss.str()이 될 것이라고 믿습니다 .c_str().

+0

꽤 귀찮습니다. 나는 그 일을 할 것이지만 나는 더 좋은 방법이 있어야한다고 생각했습니다. C++에는 문자열 대체가 없습니까? – nomadicME

+0

Java의 문자열 연결보다 약간 귀찮은 경우 일 수 있습니다. 그렇지 않으면 추가 라이브러리없이이 기능을 구현하는 것이 매우 간단합니다. – ShiggityShiggityShwa

+0

추가 라이브러리에 대한 포인트입니다. 감사. – nomadicME