Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
#1

String::replace ошибка Structure required on left side of . or .* - C++

23.06.2014, 19:35. Просмотров 664. Ответов 19
Метки нет (Все метки)

Вот собственно код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int _tmain(int argc, _TCHAR* argv[])
{
// Открываем объект ядра "файл"
HANDLE hFile = CreateFile("file.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// Создаем объект ядра "проекция файла"
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
// Проецируем в адресное пространство процесса объект "проекция файла"
PBYTE pbFile = (PBYTE) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
//Замена
pbFile.replace(pbFile.begin(), pbFile.end(), "1134", "9999");                          
cout << pbFile<< endl;
system("pause");
    return 0;
}
Ошибка Structure required on left side of . or .* в строке
C++
1
pbFile.replace(pbFile.begin(), pbFile.end(), "1134", "9999");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос String::replace ошибка Structure required on left side of . or .* (C++):

Ошибка structure required on left side of . or .* - C++
Собственно сам код: /* Две строки.Даны две строки st1 и st2.Выяснить, можно ли строку st2 получить из строки st1 вычеркиванием...

Компилятор выдает ошибку. Structure required on left side of . Or .* - C++
Компилятор выдает ошибку в этой строке: while(!f.eof()){. Не получается её исправить. Unit1.cpp(18): E2294 Structure required on...

Ошибка: lvalue required as left operand of assignment - C++
b += l * b; выдает ошибку в этой строке: lvalue required as left operand of assignment

Не могу понять, где ошибка. lvalue required as left operand of assignment - C++
Вот сам код, ошибку выдает на строчках 90-92. #include&lt;iostream&gt; using namespace std; class Array{ protected:

Error: lvalue required as left operand of assignment. Не могу разобраться где ошибка - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int n, count = 0; for (n = 111; n &lt; 1000; ++n) if (n / 100...

Lvalue required as left operand of assignment - C++
Подскажите, пожалуйста. Можно ли так (точнее что-то подобное) сделать? template &lt;class T&gt; union help{ //для mmap, так как он...

19
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 19:48 #2
Цитата Сообщение от mihalech19 Посмотреть сообщение
String::replace ошибка
pbFile у вас что, строка?
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 19:50  [ТС] #3
Всмысле ? Unsigned char так-то, если я не ошибаюсь
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 20:03 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mihalech19 Посмотреть сообщение
Unsigned char так-то, если я не ошибаюсь
И при чём зедсь тогда replace()? Это метод класса, и вызывать его должен объект класса(std::string, или какие string вы используете?), а не unsigned char.
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 20:05  [ТС] #5
Может тогда сразу подскажите как из Unsigned char string получить? Буду благодарен)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 20:10 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
#include <string>
...
std::string pbFile = (char*) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 20:14  [ТС] #7
Благодарствую
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 21:41 #8
Имейте только в виду, что изменения в string (replace()) никак не отразятся на содержимом файла.

Добавлено через 3 минуты
Чтобы изменения происходили в файле, нужно работать непосредственно с указателем, который возвращает MapViewOfFile().
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 22:25  [ТС] #9
Насколько я знаю, MapViewOfFile возвращает указатель на блок памяти. Как можно напрямую работать с этим блоком?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 22:31 #10
Цитата Сообщение от mihalech19 Посмотреть сообщение
Как можно напрямую работать с этим блоком?
Через указатель
Цитата Сообщение от alsav22 Посмотреть сообщение
который возвращает MapViewOfFile().
Приводится указатель к указателю на char (как в первом посте), дальше работа с этой строкой (как с Си-строкой). Размер её равен размеру файла:
C++
1
DWORD fileSize = GetFileSize(hFile, NULL);
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 23:03  [ТС] #11
Приводится указатель к указателю на char
Это как:
C++
1
 string *pbFile = (char*) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
или, скорее всего, я не понял о чем речь(
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 23:25 #12
C++
1
char* pbFile = (char*) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 23:30  [ТС] #13
Так, и как использовать это например с той же replace? Да я чайник(
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2014, 23:38 #14
Цитата Сообщение от mihalech19 Посмотреть сообщение
Так, и как использовать это например с той же replace?
Да никак. Я же написал:
Цитата Сообщение от alsav22 Посмотреть сообщение
дальше работа с этой строкой (как с Си-строкой).
Если в конце нет '\0' (без понятия, как там делается при мапировании), то:
Цитата Сообщение от alsav22 Посмотреть сообщение
Размер её равен размеру файла:
1
mihalech19
3 / 3 / 2
Регистрация: 23.06.2014
Сообщений: 126
23.06.2014, 23:46  [ТС] #15
Аааа, у меня уже паника)
дальше работа с этой строкой (как с Си-строкой).
С какой "этой" строкой. Я вообще запутался
0
23.06.2014, 23:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2014, 23:46
Привет! Вот еще темы с ответами:

[Error] lvalue required as left operand of assignment - C++
Задание Ошибка при компиляции. 28 14 lvalue required as left operand of assignment #include &lt;iostream&gt; #include...

Error: lvalue required as left operand of assignment| - C++
Программа перевода с 10-ой СИ в римскую.В строках начиная с 19 пишет &quot;error: lvalue required as left operand of assignment&quot; #include...

запись string и функция replace - C++
Всем привет! Задача: в командную строку подается: входной и выходной файлы, слово которое надо заменить и слово НА которое надо заменить с...

странное поведение string::replace - C++
Приветствую! Имеется следующая проблема. Есть такое состояние программы: http://s16.***********/i190/1212/d8/8065dea5231f.jpg Т.е. после...


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

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

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