#include <iostream>
using namespace std;
void main(){
cout << "Hello!" << endl;
}
Компиляция в Visual Studio 2005
1) Есть элементарный код:
Код:
компилируеться, все б хорошо ... но почему то работает только на моей машине... когда пробую на другой программа не хочет запускаться :( Как я понимаю дело в библиотеках ... а как их "подключить" к программе чтоб работало у всех?
2) Трабл с русскими шрифтами ... Hello меняем на "привет" и на выходе кракозябра ... наверное надо смотреть в сторону UTF-8 но опять же как его включить ?
Наверняка это гдето в настройках студии, помогите пожалуйста новичку!
2. Что бы русские буквы выводились в консоли - юзай функцию CharToOem
У меня такая проблема иногда возникает. Сам не пойму почему, т. к. необходимые DLL-ки копирую на другие компы...
Решил путем статического подключения библиотек (по умолчанию - через DLL).
Свойства проекта - C/C++ - Code generation - Runtime library - выбираем Multi-threaded вместо Multi-threaded DLL (для релиз-версии) и Multi-threaded Debug вместо Multi-threaded Debug DLL (для отладочной версии).
Исполнимый код при этом припухает в несколько раз
kot_ Подскажи пожалуйста в какой библиотеке находиться эта функция и пример, если не сложно ...
kot_ Подскажи пожалуйста в какой библиотеке находиться эта функция и пример, если не сложно ...[/quote]
обитает она в windows.h
Код:
#include <windows.h>
#include <iostream>
#include <string>
char *rus_str(const char *in,char *out)
{
if (CharToOem(in, out))
return out;
else
return 0;
}
int main()
{
std::string temp("Эврика");
char* str = new char[100];
std::cout << rus_str("Привет, Мир!", str) << std::endl;
std::cout << rus_str(temp.c_str(), str) << std::endl;
std::cin.get();
delete[] str;
return 0;
}
#include <iostream>
#include <string>
char *rus_str(const char *in,char *out)
{
if (CharToOem(in, out))
return out;
else
return 0;
}
int main()
{
std::string temp("Эврика");
char* str = new char[100];
std::cout << rus_str("Привет, Мир!", str) << std::endl;
std::cout << rus_str(temp.c_str(), str) << std::endl;
std::cin.get();
delete[] str;
return 0;
}
Код:
#include <iostream>
#include <windows.h>
using namespace std;
LPSTR Rus(LPCTSTR text)
{
LPSTR bufRus;
CharToOem(text, bufRus);
return bufRus;
}
void main(){
cout << Rus(L"Привет!");
}
#include <windows.h>
using namespace std;
LPSTR Rus(LPCTSTR text)
{
LPSTR bufRus;
CharToOem(text, bufRus);
return bufRus;
}
void main(){
cout << Rus(L"Привет!");
}
В MSDN написано:
Цитата:
The CharToOem function translates a string into the OEM-defined character set.
Syntax:
BOOL CharToOem(LPCTSTR lpszSrc,LPSTR lpszDst);
Syntax:
BOOL CharToOem(LPCTSTR lpszSrc,LPSTR lpszDst);
Код:
#include <iostream>
#include <windows.h>
using namespace std;
LPSTR Rus(LPCTSTR text)
{
LPSTR bufRus;
CharToOem(text, bufRus);
return bufRus;
}
void main(){
cout << Rus(L"Привет!");
}
#include <windows.h>
using namespace std;
LPSTR Rus(LPCTSTR text)
{
LPSTR bufRus;
CharToOem(text, bufRus);
return bufRus;
}
void main(){
cout << Rus(L"Привет!");
}
В MSDN написано:[/QUOTE]
Ты функцию объявляешь как принимающую константный указатель на С-строку а передаешь Wide-строку.
Код:
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
wcout.imbue(locale(".866"));
wcout<<L"Привет!"<<endl;
return 0;
}
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
wcout.imbue(locale(".866"));
wcout<<L"Привет!"<<endl;
return 0;
}