Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
9 / 1 / 3
Регистрация: 15.06.2016
Сообщений: 224

Выражение должно быть доступным для изменения левосторонним значением

21.04.2018, 18:43. Показов 2556. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Записываю имена подкаталогов в динамическую память globalfolders (WCHAR *globalfolders = new WCHAR[1000])
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private: void getfolders(){
            // получает в массив SUKABLYAT указатели на имена папок в каталоге base/
            int fl = 0;
            WIN32_FIND_DATA FindFileData;
            WCHAR *ukaz = &globalfolders[0];
            HANDLE hf;
            hf = FindFirstFile(L"base/*", &FindFileData);
            if (hf != INVALID_HANDLE_VALUE)
            {
                do
                {
                    if (fl > 1) {
                        ukaz = FindFileData.cFileName;
                        ukaz++;
                    }
                    else fl++;
                } while (FindNextFile(hf, &FindFileData) != 0);
                FindClose(hf);
            }
        }
Теперь хочу делать примерно следующее.
ifstream f("base/"+*globalfolders+"/anyfile.txt");

Но как реализовать это без понятия.
вероятно нужно привести значение по адресу globalfolders[0]
Проблема именно в приведении *globalfolders из WCHAR.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2018, 18:43
Ответы с готовыми решениями:

Выражение должно быть допустимым для изменения левосторонним значением
Вот код: a ^ 2 = a*a; a ^ 4 = a^2 * a^2; a ^ 8 = a^4 * a^4; a ^ 16 = a^8 * a^8; Ошибки находятся тут: a ^ 4 и т.д. Не знаю что...

Выражение должно быть допустимым для изменения левосторонним значением
День добрый просветите пожалуйста что ему не нравится ? #include <iostream> #include <cstdlib> #include <ctime> using...

Выражение должно быть допустимым для изменения левосторонним значением
struct ITEM { struct { char N; char A; char S; } NAS; char vers; }; struct LIST {

23
9 / 1 / 3
Регистрация: 15.06.2016
Сообщений: 224
22.04.2018, 15:44  [ТС]
Студворк — интернет-сервис помощи студентам
в temp получить L"base/foldername/anyfile.txt");
где foldername полученная папка.

ofstream f(temp);
f << "Any text" << endl;

В самой задаче мне необходимо получить куда-то все папки из директории base/ , после чего найти в каждой папке файл anyfile.txt и сделать в каждой папке такого файла запись изи взять из него тект.

Добавлено через 3 минуты
запись "any text" это я хочу писать путь temp .
Тут скорее будет так:
wofstream f(temp);
f << temp << endl;

Добавлено через 44 секунды
Думаю сначала пути в файл записать, а потом последовательно из файла. Ну, а вообще, мне главное получить путь так, что бы по нему можно было открыть...
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
22.04.2018, 15:46
Лучший ответ Сообщение было отмечено Roulen как решение

Решение

C++
1
2
3
WCHAR temp[256] = L"base/";
wcscat(temp, globalfolders);
wcscat(temp, L"/anyfile.txt");
Roulen, тогда вам нужно в цикле это делать, а не вне цикла, как вы сделали.

C++
1
ukaz = FindFileData.cFileName;
Тут вы зачем то копируете указатель, а нужно скопировать значение. Для юникода wcscpy() для копирования строк.

C++
1
ukaz++;
И зачем то этот указатель увеличиваете, хотя он всегда должен указывать на вашу временную строку (&globalfolders[0]).
1
9 / 1 / 3
Регистрация: 15.06.2016
Сообщений: 224
22.04.2018, 15:57  [ТС]
Немного переделал все, много глупого сотворил, пока уставший делал.
решил что куда проще будет во всем этом цикле получать файл и одной из других функций проверять файл на нужные мне данные, в месте где сейчас идет запись. Огромное спасибо что помогли с кодировками и склейкой строки, я первый раз работал с другими кодировками...
Хорошего вам дня, и, еще раз, - большое спасибо!
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
private: void getfolders(){
            // получает в массив globalfolders указатели на имена папок в каталоге base/
            int fl = 0;
            WIN32_FIND_DATA FindFileData;
            HANDLE hf;
            hf = FindFirstFile(L"base/*", &FindFileData);
            if (hf != INVALID_HANDLE_VALUE)
            {
                WCHAR temp[256];
                do
                {
                    if (fl > 1) {
                        wcscat(temp, L"base/");
                        wcscat(temp, FindFileData.cFileName);
                        wcscat(temp, L"/anyfile.txt");
                        ofstream f(temp);
                        f << "HELLO" << endl;
                        f.close();
                    }
                    else fl++;
                } while (FindNextFile(hf, &FindFileData) != 0);
                FindClose(hf);
            }
        }
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
22.04.2018, 16:01
Лучший ответ Сообщение было отмечено Roulen как решение

Решение

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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    WCHAR temp[256];
    WIN32_FIND_DATA FindFileData;
    HANDLE hf;
    hf = FindFirstFile(L"C:/*", &FindFileData);
    if (hf != INVALID_HANDLE_VALUE)
    {
        do
        {
            wcscpy(temp, L"base/");
            wcscat(temp, FindFileData.cFileName);
            wcscat(temp, L"/anyfile.txt");
            wcout << temp << endl;
        } while (FindNextFile(hf, &FindFileData) != 0);
        FindClose(hf);
    }
 
    system("pause");
    return 0;
}
Добавлено через 3 минуты
Roulen, temp обнуляйте, а то переполнение будет. Или wcscpy используйте.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2018, 16:01
Помогаю со студенческими работами здесь

Выражение должно быть допустимым для изменения левосторонним значением
Выдает ошибку на P = s; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;string&gt; using namespace std; void main() { ...

Выражение должно быть допустимым для изменения левосторонним значением
Здравствуйте! Подскажите, пожалуйста, в чем заключается ошибка и как ее исправить &quot;Выражение должно быть допустимым для изменения...

Выражение должно быть допустимым для изменения левосторонним значением
Получаю ошибку в переменной х в if (0 &lt; x &amp;&amp; x &lt; 100) { if ( x == 1 || x == 21 || x == 31 || x = 41 || x == 51 || x == 61 || x == 71...

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

Выражение должно быть допустимым для изменения левосторонним значением
Есть структура: struct Airport_Pass { int Distance; char Departur; char Destination; }; Чтобы инициализировать её в начале...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru