Вставка подстроки в строку

600
04 сентября 2017, 06:45

Обзавелся задачкой, нужно получить имя пользователя и затем его вставить в строку. Вопрос: как это сделать?

Код:

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
Answer 1

Проблема в том, что Вы пытаетесь сложить указатели, а не строки. Для компилятора нет особой разницы какой этой указатель: 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;
READ ALSO
Проверка при добавлении записи MySQL

Проверка при добавлении записи MySQL

Сделал триггер при добавлении записи в таблицуНо как то работает он не правильно

574
Отладка кода по работе со слушателями

Отладка кода по работе со слушателями

Моя первая программа на JavaНе знаю, как правильно описать проблему, поэтому не могу найти ответ в интернете

511
Как добавить MouseListener к Image? JAVA

Как добавить MouseListener к Image? JAVA

Задача такая: чтобы при клике на картинку в консоль выводилось сообщение

497