#include <Windows.h>
#include <string>
#include <iostream>
using namespace std;
static BOOL CALLBACK enumWindowCallback(HWND func_hWnd, LPARAM lparam) {
int length = GetWindowTextLengthA(func_hWnd);
if (length != 0) {
string windowTitle(length, '\0');
GetWindowTextA(func_hWnd, windowTitle.data(), length + 1); // ANSI version and func_hWnd
std::cout << func_hWnd << ": " << windowTitle << std::endl;
}
return TRUE;
}
int main() {
SetConsoleOutputCP(GetACP());
EnumWindows((WNDENUMPROC)enumWindowCallback, 0);
system("pause");
return 0;
}
#include <Windows.h>
DWORD WINAPI ThreadProc(LPVOID param); // строчка необходима, чтобы весь код выше реализации функции её видел
public ref class Form1 : System::Windows::Forms::Form {
System::Windows::Forms::Button^ button1;
System::Windows::Forms::Label^ label1;
void InitializeComponent() {
this->button1 = gcnew System::Windows::Forms::Button();
this->label1 = gcnew System::Windows::Forms::Label();
this->SuspendLayout();
this->button1->Location = System::Drawing::Point(205, 95);
this->button1->Name = "button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = "button1";
this->button1->UseVisualStyleBackColor = true;
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(218, 153);
this->label1->Name = "label1";
this->label1->Size = System::Drawing::Size(44, 16);
this->label1->TabIndex = 1;
this->label1->Text = "label1";
this->AutoScaleDimensions = System::Drawing::SizeF(8.0, 16.0);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(485, 292);
this->Controls->Add(this->label1);
this->Controls->Add(this->button1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedSingle;
this->MaximizeBox = false;
this->Name = "Form1";
this->Text = "Form1";
this->ResumeLayout(false);
this->PerformLayout();
}
public:
static Form1^ myform;
Form1() {
InitializeComponent();
myform = this;
button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
}
void SetLabel(System::Int32 i) {
label1->Text = i.ToString();
}
private:
void button1_Click(System::Object^ sender, System::EventArgs^ e) {
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, NULL, 0, NULL);
}
};
DWORD WINAPI ThreadProc(LPVOID param) {
for (int i = 1; i <= 5; i++) {
::Sleep(1000);
// Invoke вызывает указанный метод в потоке окна. MS не обещает синхронизацию
// потоков для gui-кода. Если не использовать данный метод, то в худшем случае приложение
// упадёт внутри небезопасных библиотек
// то есть никаких нормальных исключений не будет. Только хардкорный SEH.
Form1::myform->Invoke(gcnew System::Action<System::Int32>(Form1::myform, &Form1::SetLabel), i);
}
return 0;
}
int main(array<System::String^>^ args) {
System::Windows::Forms::Application::EnableVisualStyles();
System::Windows::Forms::Application::SetCompatibleTextRenderingDefault(false);
System::Windows::Forms::Application::Run(gcnew Form1());
return 0;
}
{"bytes":[116,101,115,116],"subtype":null}
.int main() {
const char* endl = "\r\n";
WSADATA wsa;
std::string domin;
int status;
std::string write_data;
struct addrinfo hints = { 0 }, * res, * p;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
SetConsoleCP(GetACP());
SetConsoleOutputCP(GetACP());
if (status = WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
std::cout << "Error: of WSAStatus: " << gai_strerror(status) << std::endl;
return status;
}
std::cout << "Enter domin: " << std::endl;
std::getline(std::cin, domin);
if (status = getaddrinfo(domin.c_str(), "80", &hints, &res) != 0) {
std::cout << ("Error: of getaddrinfo", gai_strerror(status));
return status;
};
{
std::ostringstream ws;
ws << "GET / HTTP/1.1" << endl;
ws << "Host: " << domin << endl;
ws << "Accept: text/html, text/*" << endl;
ws << "Connection: close" << endl;
ws << endl;
write_data = ws.str();
}
std::cout << write_data;
char ipstr[1024];
int s = INVALID_SOCKET;
char bufrecv[2048];
for (p = res; p != NULL; p = p->ai_next) {
const char* ipver;
void* addr;
if (p->ai_family == AF_INET) {
struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
addr = &(ipv4->sin_addr);
ipver = "IPv4: ";
}
else {
struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr;
addr = &(ipv6->sin6_addr);
ipver = "IPv6: ";
}
inet_ntop(p->ai_family, addr, ipstr, sizeof(ipstr));
std::cout << "addres: " << ipver << ipstr << std::endl;
if (s != INVALID_SOCKET) {
shutdown(s, SD_BOTH);
closesocket(s);
}
if (((s = socket(p->ai_family, p->ai_socktype, p->ai_protocol))) == INVALID_SOCKET) {
std::cout << "error of socket: " << WSAGetLastError() << std::endl;
continue;
}
if ((connect(s, p->ai_addr, p->ai_addrlen)) == SOCKET_ERROR) {
std::cout << "Error of connect: " << WSAGetLastError() << std::endl;
continue;
}
bool success = true;
int writed = 0;
for (size_t i = 0, data_len = write_data.length(); i < data_len; i += writed) {
writed = send(s, write_data.c_str() + i, (int)min(data_len - i, INT_MAX), 0);
if (writed == SOCKET_ERROR) {
std::cout << "Error of send: " << WSAGetLastError() << std::endl;
success = false;
break;
}
}
if (success) {
int readed;
while ((readed = recv(s, bufrecv, sizeof(bufrecv), 0)) != SOCKET_ERROR && readed != 0) {
std::cout << std::string(bufrecv, readed);
}
if (readed == SOCKET_ERROR) {
std::cout << " recv " << WSAGetLastError() << std::endl;
}
break;
}
}
if (s != INVALID_SOCKET)
{
shutdown(s, SD_BOTH);
closesocket(s);
}
freeaddrinfo(res);
WSACleanup();
system("pause");
return 0;
}
#pragma comment (lib,"Ws2_32.lib")
#include <winsock2.h>
#include <WS2tcpip.h>
#include <Windows.h>
#include <iostream>
#include <string>
int main() {
WSADATA wsa;
std::string domain;
int status;
struct addrinfo hints = { 0 }, * res, * p;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
// ошибки выводятся в ANSI кодировке, а консоль по умолчанию в OEM
SetConsoleCP(GetACP());
SetConsoleOutputCP(GetACP());
// На Windows необходима инициализация сетевой библиотеки
if (status = WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
// принято возвращать причину ошибки, а не только сам факт
return status;
}
std::cout << ("Enter domain: ");
// даже доменные имена могут иметь длину 256 символов
// пользователь же может вообще ввести сколько ему угодно
std::getline(std::cin, domain);
if (status = getaddrinfo(domain.c_str(), "80", &hints, &res) != 0) {
std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
return status;
};
char ipstr[INET6_ADDRSTRLEN];
for (p = res; p != NULL; p = p->ai_next) {
/*const char* ipver;*/
void* addr;
if (p->ai_family == AF_INET) {
struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
addr = &(ipv4->sin_addr);
/*ipver = "IPv4:";*/
}
else {
struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr;
addr = &(ipv6->sin6_addr);
/*ipver = "IPv6:";*/
}
inet_ntop(p->ai_family, addr, ipstr, sizeof(ipstr));
std::cout << "addres: " << ipstr << std::endl;
};
freeaddrinfo(res);
system("pause");
// деструктор сетевой библиотеки
WSACleanup();
return 0;
}
// xyz.h
class xyz
{
private:
int abc;
public:
PROJECT2_API int printing_int();
};
//xyz.cpp
PROJECT2_API int hyz::printing_int() { // return 5
return abc;
}
void printing(char* pChar) {
char a[] = "Example String";
strcpy_s(pChar, strlen(a) + 1, a);
}
int main() {
char[4] buff = {0};
printing(buff);
printf("%s\n", buff);
}
std::string ToCppString(String^ s, Text::Encoding^ enc = Text::Encoding::ASCII) {
array<unsigned char>^ chars = enc->GetBytes(s);
pin_ptr<unsigned char> pp = &chars[0];
char *first = (char*)pp, *last = first + chars->Length;
return std::string(first, last);
}
template <class _Elem = char, class _Traits = char_traits<_Elem>, class _Alloc = allocator<_Elem>>
std::string getstrbits(const std::basic_string<_Elem, _Traits, _Alloc>& s) {
std::stringstream ret;
const constexpr int digits = std::numeric_limits<_Elem>::digits + std::numeric_limits<_Elem>::is_signed;
for (auto c : s) ret << std::bitset<digits>(c).to_string();
return ret.str();
}
Пропускаешь строчку через функцию, а затем скармливаешь bitset. Только нужно понимать, что bitset это массив фиксированного размера, а string динамического. #include <windows.h>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <ctime>
using namespace std;
const int UserCount = 3;
struct Worker { // начало объявления структурного типа Worker
string surname; //объявление поля «фамилия работника»
string position; //объявление поля «название занимаемой должности»
unsigned short int year; //объявление поля «год поступления на работу»
static bool insensitive_compare(const Worker& a, const Worker& b)
{
string ta(a.surname), tb(b.surname);
transform(ta.begin(), ta.end(), ta.begin(), [](unsigned char c) { return std::toupper(c); });
transform(tb.begin(), tb.end(), tb.begin(), [](unsigned char c) { return std::toupper(c); });
return ta < tb;
}
}; //конец объявление структуры Worker
template<class T> void getline_i(istream& is, T& o)
{
string s;
while (true)
{
getline(is, s);
stringstream(s) >> o;
if (s.length() < 1 || !isdigit(s[0]))
{
cout << "Ошибка. Значение должно быть числом: ";
continue;
}
else
{
break;
}
}
}
int main()
{
system("chcp 1251");
int n = 3; // объявление константы n — числа элементов типа «Worker»
bool people = false;
time_t rawtime;
struct tm _tm;
time(&rawtime);
gmtime_s(&_tm, &rawtime);
unsigned short int now_year = _tm.tm_year + 1900, seniority; // объявление переменных now_year — текущий год и seniority — стаж
vector<Worker> K;
Worker temp;
for (int i = 0; i < UserCount; i++)
{
cout << "Фамилия и инициалы: ";
getline(cin, temp.surname);
cout << "Название занимаемой должности: ";
getline(cin, temp.position);
cout << "Год поступления на работу: ";
getline_i(cin, temp.year);
cout << "\n";
K.push_back(temp);
}
cout << "Введите стаж работы(лет): ";
getline_i(cin, seniority);
cout << endl;
for (auto current : K)
{
if ((now_year - current.year) > seniority)
{
cout << current.surname << endl;
people = true;
}
}
if (people == false)
cout << "Нет таких работников!" << endl;
cout << endl;
cout << "Список работников в алфавитном порядке" << endl;
sort(K.begin(), K.end(), Worker::insensitive_compare);
for (auto current : K)
cout << current.surname << endl;
system("pause");
return 0;
}