2012-10-29 1 views
2

Im는 C++을 사용하는 몇 가지 문제를 가지고 있습니다 .. 타임 스탬프로 파일 이름을 가진 프레임을 저장하려고하는데 성공하지 못했습니다. 아무도 도와 줄 수 있습니까?C에 D3DXSaveTextureToFileW를 사용하여 파일 이름을 타임 스탬프로 저장하는 방법은 무엇입니까?

그것은 내가 사용하는 경우 제대로 저장합니다

D3DXSaveTextureToFileW((LPCWSTR)"file.bmp",D3DXIFF_BMP,tex,NULL); 또는

내가 몇 가지 문제를 얻을 좀 더 정교 파일 이름을하려고하면, 그것은 컴파일하지만 파일을 저장하지 않습니다
D3DXSaveTextureToFileW(L"file.bmp", frameName,D3DXIFF_BMP,tex,NULL); 

...

내가

LPCWSTR frameName; 
std::string s = std::string("file") + std::string(".bmp"); 
frameName = (LPCWSTR)s.c_str(); 
D3DXSaveTextureToFileW((LPCWSTR)frameName,D3DXIFF_BMP,tex,NULL); 

같이가 someting를 사용하려고하고있어 SAV하지 않습니다 내가 문제를 저장할처럼 뭔가를하려고하면 전자 ... 그리고 계속 :

time_t seconds; 
seconds = time (NULL);  
time_t rawtime; 
time (&rawtime); 

LPCWSTR frameName; 
std::string s = std::string("file") + std::string(&rawtime); 
frameName = (LPCWSTR)s.c_str(); 

D3DXSaveTextureToFileW((LPCWSTR)frameName,D3DXIFF_BMP,tex,NULL); 

답변

3

당신은 LPCWSTRstd::string::c_str()의 결과 (A const char*)를 캐스팅 할 수 없습니다. 파일 이름을 구성하기 위해 std::wstringstream를 사용

#include <sstream> 
... 
std::wstringstream frameName; 
frameName << L"file" << rawtime << L".bmp"; 
D3DXSaveTextureToFileW(frameName.str().c_str(),D3DXIFF_BMP,tex,NULL); 

당신이 frameName.str()의 결과가 std::wstring을 사용하여 저장합니다.

+0

시간 내 주셔서 감사합니다 : Unfortunatelly, 오른쪽 피연산자 유형으로 인해 작동하지 않습니다 .. 제게 어떤 제안을 할 수 있습니까? – user1782638

+0

'#include '이 필요합니다. – hmjd

+0

효과가있었습니다! 많은 감사합니다 !!! ;) – user1782638

0

간단히 char*wchar_t*으로 전송할 수 없습니다. 그것은 충분하지 않아. 텍스트를 8 비트 인코딩에서 16 비트 인코딩으로 변환해야합니다.

그렇다면 프로그램에서 ANSI 문자열을 사용하는 것처럼 보이기 때문에 D3DXSaveTextureToFileA을 사용하는 것이 더 쉽습니다. 예를 들어

:

std::string s = std::string("file") + std::string(".bmp"); 
D3DXSaveTextureToFileA(s.c_str(),D3DXIFF_BMP,tex,NULL); 

이는 전문 소프트웨어가 될 것을 의미하는 경우, 당신이 당신의 응용 프로그램 전체에서 유니 코드 문자를 사용 할 것을 권장합니다 거라고 말했다 가졌어요. 어떤 경우에는 당신은 다음과 같이 이것을 할 것입니다 :

+0

이것은 많은 도움이되었습니다 !!! 지금 타임 스탬프로 완료해야합니다. :) – user1782638

관련 문제