#ifndef RusH
#define RusH
#include <windows.h>
#include <string>
using namespace std;
char * Rus(TCHAR* in, char* out)
{
if (CharToOem(in, out))
return out;
else
return 0;
}
char * Rus(const string &in, char out[])
{
if (CharToOemA(in.c_str(), out))
return out;
else
return 0;
}
#endif
visual studio 2005
1- н меня не работает #include <Rus.h> (error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char []' to 'LPCWSTR' 2 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' 11
)
и вот код файл Rus.h
#ifndef RusH
#define RusH
//Библиотека Rus.h
#include <windows>
#include <string>
using namespace std;
char ss[100];
char * Rus(const char in[],char out[])
{ if (CharToOem(in,out)) return out;else return 0; }
char * Rus(const string &in,char out[])
{ if (CharToOem(in.c_str(),out)) return out;else return 0;}
#endif
плиз помагите
ответ:
1 путь) в самом проекте вместо Unicode поставь MultiByteChar
2 путь) используй вместо CharToOem - CharToOemA
3 путь) используй вместо char * - wchar_t * (TEXT(), _T, LPTSTR, <tchar.h>)
Код:
main.cpp
Код:
#include "stdafx.h" // ну это уже от настроек проекта зависит, но обычно нужно
#include <stdio.h>
#include "rus.h"
int _tmain(int argc, _TCHAR* argv[])
{
char* str = new char[100];
Rus(_T("превед мир!"), str);
printf("%s\n", str);
std::string s("превед ещё раз!");
Rus(s, str);
printf("%s\n", str);
delete[] str;
return 0;
}
#include <stdio.h>
#include "rus.h"
int _tmain(int argc, _TCHAR* argv[])
{
char* str = new char[100];
Rus(_T("превед мир!"), str);
printf("%s\n", str);
std::string s("превед ещё раз!");
Rus(s, str);
printf("%s\n", str);
delete[] str;
return 0;
}