CodingUniversity Ответов: 1

Как я могу использовать строку внутри неподписанного символа ?


Эй, моя программа скачивает файл изображения и меняет обои для рабочего стола, моя проблема в том, что я не знаю, как использовать переменную "savepath" внутри неподписанного символа без каких-либо ошибок.

Вы не могли бы мне помочь?

string dwnld_URL = "https://srv-file7.gofile.io/download/zKhClg/Ooops-PixTeller%20(2).png";
// Create Directory and Directory Path
string dir = "C:\\Users\\" + username() + "\\Documents\\WastedBit";
CreateDirectory(dir.c_str(), NULL);
// Save and Download Image to Path
string savepath = "C:\\Users\\" + username() + "\\Documents\\WastedBit\\Wasted.bmp";
URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);
// New Desktop Wallpaper
unsigned char NewDesktop[46] = { savepath.c_str() };


Что я уже пробовал:

Я пытался использовать .c_str без успеха.

1 Ответов

Рейтинг:
7

Richard MacCutchan

Кроме всего прочего, вам нужно проверить правила для массивов языка Си. Вы не можете установить значение массива с помощью = оператор. Вам нужно использовать одну из функций копирования строк или памяти. Кроме того, чего именно вы пытаетесь достичь, превращая символьную строку в беззнаковую символьную строку?


[no name]

Мне это нужно для одной функции.

Richard MacCutchan

Мне очень жаль, но это нам ни о чем не говорит. Пожалуйста, объясните точно, что вы пытаетесь сделать, поскольку вполне возможно, что это создаст, а не исправит проблему в вашем коде.

[no name]

Мне нужно преобразовать эту строку (savepath) в символ *unsigned* char, мне нужно использовать его для функции SetRegValueEx.

Richard MacCutchan

Вам не нужен беззнаковый символ для этой функции. Просто пройдите мимо savepath.c_str() указатель с приведением к const BYTE *.

[no name]

const BYTE *NewDesktop = savepath.c_str();


Разве не работает на то, что здесь что-то не так ?

Richard MacCutchan

Да, если вы пытаетесь создать раздел реестра (чего на самом деле не должно быть), то все, что вам нужно сделать, это передать ключ реестра. c_str() указатель на RegSetValueEx функция следующим образом:

RegSetValueEx(key, valuename, NULL, type, (const BYTE *)savepath.c_str(), savepath.length());

[no name]

Большое спасибо! ты научил меня чему-то новому!
Работает!