Другое С/С++ Вопрос - Ответ

f.lux

Новичок
8
0
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
 

SR_team

like pancake
BH Team
4,720
6,372
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
 

SR_team

like pancake
BH Team
4,720
6,372
И зачем тебе asm и вообще вызов каких-либо функций?

Да, спасибо за совет(без рофла). Только из этого следует вопрос по wndproc:

При компиляции этого кода
По плану он должен исполняться:
void CALLBACK prtbtn(std::string c) {
    char* btn = _strdup(c.c_str());
    SF->getSAMP()->getChat()->AddChatMessage(-1, btn);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if (message == WM_KEYDOWN) {
        if(wParam == 'Y') prtbtn("Pressed");
        return 0L;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}

Выходит ошибка:Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
Надо использовать CallWindowProc, а не DefWindowProc

Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
 

f.lux

Новичок
8
0
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
заранее извиняюсь за хуйню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin >> name;
    cout << "Enter ur favorite dessert: " << endl;
    cin >> dessert;
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
- если написать код таким образом, то при вводе имени и фамилии (два слова, которых разделяет пробел) второе слово записывается сразу же в dessert, а фиксится это следующим образом:

Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin.get(name,29).get();
    cout << "Enter ur favorite dessert: " << endl;
    cin.get(dessert,34).get();
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
либо же используя getline, разница не велика, суть одна и та же.
вот я хочу проделать тоже самое с string(сделать возможным записать в нее два слова, между которыми стоит пробел), но get() и getline() просто не дает мне этого сделать, ибо первый параметр название символьного массива, вместо которого я использую обычный string.
 

SR_team

like pancake
BH Team
4,720
6,372
заранее извиняюсь за хуйню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin >> name;
    cout << "Enter ur favorite dessert: " << endl;
    cin >> dessert;
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
- если написать код таким образом, то при вводе имени и фамилии (два слова, которых разделяет пробел) второе слово записывается сразу же в dessert, а фиксится это следующим образом:

Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin.get(name,29).get();
    cout << "Enter ur favorite dessert: " << endl;
    cin.get(dessert,34).get();
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
либо же используя getline, разница не велика, суть одна и та же.
вот я хочу проделать тоже самое с string(сделать возможным записать в нее два слова, между которыми стоит пробел), но get() и getline() просто не дает мне этого сделать, ибо первый параметр название символьного массива, вместо которого я использую обычный string.
getline(cin, string, '\n'); -- будет считывать строку до символа переноса, т.е. пока не нажмешь enter
 
  • Нравится
Реакции: f.lux

bet.io

Известный
117
16
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
 
  • Нравится
Реакции: Vintik

SR_team

like pancake
BH Team
4,720
6,372
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
А чо сам домашку никак не можешь сделать? Вбей в гугл, давно решенная задачка.
 

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как сделать exe file и через него подгружать в процесс gta sa файл?
 

ImmortalDev

Участник
90
49
Всем привет!
Решил поиграться с анимациями игрока.
В общем, имеется смещение - +0x15C, некоторые статусы анимации.
  • 0 = прыгает от земли
  • 61 = ударяет
  • 102 = остановился
  • 154 = спринт (бежит с ускорением)
  • 205 = бежит
Так вот, как установить одну из этих анимок игроку?
Пробовал так:
C++:
DWORD anim = *(DWORD*)0xB6F5F0 + 0x15C;
anim = 205;
Не работает.
 

Dark_Knight

Me, me and me.
Друг
4,065
2,079
Потому что ты не правильно записываешь. Ты читаешь значение с записываешь в свою собственную переменную, а надо записывать значение в адрес переменной или тебе надо получить указатель переменной и записывать значение в него.
 
  • Нравится
Реакции: ImmortalDev

Бубликов И.И

Потрачен
37
13
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет!
Решил поиграться с анимациями игрока.
В общем, имеется смещение - +0x15C, некоторые статусы анимации.
  • 0 = прыгает от земли
  • 61 = ударяет
  • 102 = остановился
  • 154 = спринт (бежит с ускорением)
  • 205 = бежит
Так вот, как установить одну из этих анимок игроку?
Пробовал так:
C++:
DWORD anim = *(DWORD*)0xB6F5F0 + 0x15C;
anim = 205;
Не работает.
C++:
DWORD* anim = (DWORD*)(0xB6F5F0 + 0x15C);
*anim = 205;
Вот так ведь это записывается
 
  • Нравится
Реакции: ImmortalDev

ImmortalDev

Участник
90
49
Потому что ты не правильно записываешь. Ты читаешь значение с записываешь в свою собственную переменную, а надо записывать значение в адрес переменной или тебе надо получить указатель переменной и записывать значение в него.
Хорошо, спасибо тебе.
C++:
DWORD* anim = (DWORD*)(0xB6F5F0 + 0x15C);
*anim = 205;
Вот так ведь это записывается
не рабит, проверял