디버그 창에 출력하기

OutputDebugString(문자열);

'c/c++' 카테고리의 다른 글

쓰레드  (0) 2012.11.21
MMF  (0) 2012.11.16
ofstream 파일 이어쓰기  (0) 2012.11.02
파일 경로 분리  (0) 2012.11.01
한글 깨짐  (0) 2012.10.31

ofstream 파일 이어쓰기


 //std::ofstream fout; //추출한 문자열 저장할 텍스트 파일

//fout.open("c:\\Path.txt",std::ios_base::out | std::ios_base::app);

//fout<<"pPath : "<< pPath<<endl;

//fout.close();


오픈 모드를 변경해 주면

 파일 이어쓰기가 가능하다

'c/c++' 카테고리의 다른 글

MMF  (0) 2012.11.16
디버그 창에 출력하기  (0) 2012.11.16
파일 경로 분리  (0) 2012.11.01
한글 깨짐  (0) 2012.10.31
C++ 파일 크기 구하기  (0) 2012.09.24

파일 경로 분리

_splitpath(path,NULL,NULL,fname,ext); // path에서 파일 이름, 확장자 분리

buf.append(fname); 

buf.append(ext);

'c/c++' 카테고리의 다른 글

디버그 창에 출력하기  (0) 2012.11.16
ofstream 파일 이어쓰기  (0) 2012.11.02
한글 깨짐  (0) 2012.10.31
C++ 파일 크기 구하기  (0) 2012.09.24
MMF(memory mapping file)  (0) 2012.08.16

wchar -> char -> String


  • wchar -> char로 문자열을 변환 하려고 하는데,
    인터넷에서 찾은 함수는 메모리 할당하고 해제 해주지 않고 
    그 메모리를 포인터로 넘겨줘서 메모리 사용에 좋지 못할 것 같아서 수정하였다.

  • 함수 WCharToChar,  ToUTF8Str 두개 사용 

  • 메모리를 할당 받아서 WCharToChar 함수로 포인터 넘겨줌 



  // wchar -> char

void WCharToChar(const wchar_t* pwstrSrc, char * pstr)

{

setlocale(LC_ALL, "korean"); 

assert(pwstrSrc);


#if !defined _DEBUG

int len = 0;

len = (wcslen(pwstrSrc) + 1)*2;

char* pstr      = (char*) malloc ( sizeof( char) * len);


WideCharToMultiByte( 949, 0, pwstrSrc, -1, pstr, len, NULL, NULL);

#else

int nLen = wcslen(pwstrSrc);

int count = 0;


count = wcstombs(pstr, pwstrSrc, nLen+1); // 여기서 와이드에서 멀티 바이트로 변환

#endif

}



  std::string ToUTF8Str(const WCHAR *S, const int NumChars)

{

std::string Result = "";

int BufferLen = NumChars + 1;


char* pstr      = (char*) malloc ( sizeof( char) * BufferLen + 1);


WCharToChar(S, pstr); // 여기서 호출 해서 


Result.assign(pstr); // String 으로 변환 해준 후 

free(pstr);            // 메모리 해제 


return Result;

}



만약 wcstombs() 사용하는데 뒤에 부분이 잘린다면 

pstr의 크기를 2배로 늘려주면 됨 

버퍼 크기 문제였음ㅜㅜ


문자열 짜잉나 !!

한글 깨짐

#include <locale.h>


setlocale(LC_ALL, "Korea");



나는 이걸로 안됐지만 ㅜㅜ

나중에 필요할까봐 ㅋㅋ

'c/c++' 카테고리의 다른 글

디버그 창에 출력하기  (0) 2012.11.16
ofstream 파일 이어쓰기  (0) 2012.11.02
파일 경로 분리  (0) 2012.11.01
C++ 파일 크기 구하기  (0) 2012.09.24
MMF(memory mapping file)  (0) 2012.08.16

[LNK2019] inet_addr 사용 오류

error LNK2019: __imp__inet_addr@4 외부 기호(참조 위치: "int __stdcall License(struct HWND__ *,unsigned int,unsigned int,long)" (?License@@YGHPAUHWND__@@IIJ@Z) 함수)에서 확인하지 못했습니다.



라이브러리 추가 안해서 생긴 오류

 #pragma comment(lib, "Ws2_32") 

추가하여 해결 


LNK2019 에러 났을 경우 라이브러리 확인해보기!


* 특히 디버그 했을때는 실행 됐는데,

릴리즈 일때 실행 되지 않았을 경우 릴리즈에서 라이브러리 추가 안됐을 확률이 높다 




[WINAPI] 콘솔 창 띄우고 싶을 때

- api에서 값 확인 하고 싶을 때

간편하게 콘솔 창 띄울 수 있는 방법

main위에 추가하기!


- 디버그 모드에서만 콘솔 창이 뜬다.



#ifdef _DEBUG

#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")

#endif


'c/c++ > winapi' 카테고리의 다른 글

HINSTANCE HWND 차이  (0) 2012.11.26
메시지 박스 최상위로 뜨게  (0) 2012.11.21
[API] 여러 가지 출력 - 그래픽  (0) 2012.08.02
[API]OWNERDRAW로 버튼 이미지 바꾸기  (0) 2012.08.01
[API] 슬라이더에서 값 읽어오기  (0) 2012.07.23

LINK : fatal error LNK1104: 'libboost_regex-vc100-mt-gd-1_51.lib' 파일을 열 수 없습니다.






라이브러리 경로를 추가 안해줘서 생기는 오류!!


저 위치에 라이브러리 위치 추가하기 

'and so on > error' 카테고리의 다른 글

버그. 에러, 예외  (0) 2013.01.25
F5 실행 Ctrl F5 결과 값 차이 발생  (0) 2012.12.07
[SVN] checkout 하기  (0) 2012.12.04
[LNK2001] 외부 기호를 확인할 수 없습니다.  (0) 2012.11.26
[LNK2019] inet_addr 사용 오류  (0) 2012.10.18

C++ DLL 함수 char*를 C#에서 읽어 오기

- C++에서 만든 dll 함수 


extern "C" __declspec(dllexport) char* Suma(char* a, char*b)

{

char* result = (char*)LocalAlloc(LPTR, strlen(a) + strlen(b) +1);

strcat(result, a);

strcat(result, b);

  LocalFree(result);

return result;

}






- C#에서 dll함수 적용하기

class Program

{


 [DllImport("C:\\DllName.dll", CallingConvention = CallingConvention.Cdecl)]

public static extern System.IntPtr Suma(string a, string b);


static void Main()

{

string a = "a";

string b = "b";

IntPtr p = Suma(a,b);

string c = Marshal.PtrToStringAnsi(p);

Marshal.FreeHGlobal(p);

Console.WriteLine(c);

}

}




C++ 에서는 

LocalAlloc을 이용 메모리 할당 해줘야 함


C#에서는

 IntPtr 구조체를 선언하여 dll 함수 저장 후 

Marshal.PtrToStringAnsi() 메소드 이용하여 관리되는 string,  관리되지 않는 ANSI 문자열 복사 

Marshal.FreeHGlobal() 메소드 이용하여 할당한 메모리 해제 






 출처 - http://blog.naver.com/PostView.nhn?blogId=nickpooh&logNo=50108296076&redirect=Dlog&widgetTypeCall=true

C++ 파일 크기 구하기

파일 크기를 구하기 위한 함수

path는 전체 경로를 포함한 파일 이름 

size는 파일 크기 값 



int GetFilesize (const wchar_t* path)

{

std::ifstream ifs (path, std::ios::in | std::ios::binary );

int size= 0 ;


if(ifs.is_open()==0)

printf("\n\n파일이 존재하지 않습니다.n\n");


ifs.seekg(0,std::ios::end);

size  = ifs.tellg();

//std::istream::pos_type pt = ifs.tellg();

printf("\n\n\n★pt : %d \n\n\n\n",size);


ifs.close();


return size;

}




'c/c++' 카테고리의 다른 글

디버그 창에 출력하기  (0) 2012.11.16
ofstream 파일 이어쓰기  (0) 2012.11.02
파일 경로 분리  (0) 2012.11.01
한글 깨짐  (0) 2012.10.31
MMF(memory mapping file)  (0) 2012.08.16