Обзавелся задачкой, нужно получить имя пользователя и затем его вставить в строку. Вопрос: как это сделать?
Код:
DWORD size = 1024;
char buf[1024];
GetUserName(buf, &size);
char* path;
path = "C:\\Users\\" + buf + "\\Desktop";
cout << path;
Должно получиться так:
C:\Users\Example-PC\Desktop
Но возникают ошибки:
expression must have integral or unscoped enum type
Error C2110 '+': cannot add two pointers
Проблема в том, что Вы пытаетесь сложить указатели, а не строки. Для компилятора нет особой разницы какой этой указатель: char*
, int*
или некий абстрактный T*
. Чтобы выполнять конкатенацию двух сишных нуль-терминированных строк (которые де-факто являются char*
) следует использовать функцию strcat
. Для Вашего случая нужно завести дополнительный массив (помимо buf
), а не просто указатель, и выполнять склейку в него, например:
char path[1024] = "C:\\Users\\";
strcpy(path, buf);
strcpy(path, "\\Desktop");
Также можно воспользоваться функцией sprintf
. В любом случае, дополнительно имеет смысл проверять отсутствие выхода за границы выделенной памяти.
Однако, для c++ кода (если это возможно) стоит отказаться от си-строк и использовать типы наподобие std::string
, для которых имеются соответствующие перегрузки операторов и можно выполнять конкатенацию просто и очевидно, не отвлекаясь на задачи по контролю памяти. Пример:
std::string path = "C:\\Users\\" + std::string(buf) + "\\Desktop";
cout << path;
Сделал триггер при добавлении записи в таблицуНо как то работает он не правильно
Моя первая программа на JavaНе знаю, как правильно описать проблему, поэтому не могу найти ответ в интернете
Задача такая: чтобы при клике на картинку в консоль выводилось сообщение