Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
TheNewPr
0 / 0 / 0
Регистрация: 23.04.2018
Сообщений: 8
1

Странная ошибка при использовании метода erase

14.07.2018, 23:05. Просмотров 134. Ответов 3
Метки с++ (Все метки)

И снова здравствуйте. Уже несколько дней пытаюсь решить эту проблему. При шифровке файла, моё расширение прибавляется, но когда я хочу убрать его (при считывании строки нахожу в ней расширение) при попытке его (расширение) удалить методом erase выдается ошибка, о том, что не правильно конвертирован из const chаr* в basic string! Очень прошу помощи. Если у кого - то есть предложение, то прошу не молчать, а написать! Помочь может всё.
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <Windows.h>
#include <iostream>
#include <clocale>
using namespace std;
 
void crypt(char *in, int szin, const char *key, int szkey) {
    for ( int i = 0; i < szin; i++)
        in[i] ^= key[i % szkey];  
}
 
int main() 
{
setlocale(LC_ALL, "rus");
    char str[] = ("Aj;:1@23#3$/.,*~~JFGHKL|||_-_-_`");
 
    string myString;
    cout<<"Ââåäèòå äèðåêòîðèþ>> ";
    cin >> myString;
    string pref = myString+".rslock";
    
    string rem = myString.erase(".rslock", 6);
    LPCSTR locked = pref.c_str();
    LPCSTR result = myString.c_str();
    LPCSTR unlock = rem.c_str();
    
    HANDLE hFile = CreateFile(result, GENERIC_WRITE | GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
    DWORD dwFileSize = GetFileSize(hFile, 0);
    HANDLE hFileMap = CreateFileMapping(hFile, 0, PAGE_READWRITE, 0, dwFileSize, 0);
    char* cFile = (char*)MapViewOfFile(hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
 
    crypt(cFile, dwFileSize, str, strlen(str));
    UnmapViewOfFile(cFile);
    SetFilePointer(hFile, dwFileSize, 0, 0);
    SetEndOfFile(hFile);
    CloseHandle(hFileMap), CloseHandle(hFile);
 
    
    if (myString.find(".rslock")==std::string::npos)
    {
        Sleep(1000);
        rename(result, locked);
    }
    else
    {
        Sleep(1000);
        rename(result, unlock);
    }
 
    cin.get();cin.get();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2018, 23:05
Ответы с готовыми решениями:

Странная ошибка при сборке nasm
всем привет. нужно собрать nasm для вендус. использую MSYS+MinGW. configure...

Ошибка "Signal received" при использовании taglib
Когда пытаюсь вывести id3v2-&gt;artist(или любое другое ), вне функции где...

Странная ошибка
Здравствуйте, форумчане. Пишу небольшую игру, для проверки памяти...

Шифрование при использовании CryptoAPI
Нашел исходник для шифрования строки при помощи сессионного ключа. #include...

Не создаётся фаил при использовании CreateFile
#include &lt;Windows.h&gt; #include &lt;iostream&gt; using namespace std; int main()...

3
TRam_
15.07.2018, 21:03
  #2

Не по теме:

Цитата Сообщение от TheNewPr Посмотреть сообщение
Если у кого - то есть предложение, то прошу не молчать, а написать!
Не выражал бы своё самомнение - получил бы ответ быстрее

0
fastb1t
Software Developer
240 / 171 / 91
Регистрация: 03.05.2017
Сообщений: 589
Завершенные тесты: 1
15.07.2018, 22:36 3
Ну вообще-то erase не принимает строк http://www.cplusplus.com/reference/string/string/erase/
0
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
19.07.2018, 16:30 4
TheNewPr, а зачем вам файлы шифровать и расширение файла менять?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2018, 16:30

Баг в MinGW при использовании fread
Ну собственно вот простой тестовый код который выполняется некорректно: ...

Вылетает программа при использовании dll
итак. использую функции из dll. typedef void* HID_DEVICE; DWORD...

Не переименовывает файл при использовании WinAPI
Возникла задача переименовать файл. Использую функцию rename, в консольном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru