Только вникаю не судите =)
Итак у меня есть 3 файла которые нужно скопировать из пункта E в пунт D.
Как решить эту задачу?
std::string MassiveFiles[3] = {"1.txt","2.txt","3.txt"}; // или как правильно записать?
for (int i = 0; MassiveFiles; i++)
{
CopyFile("E:\\откуда", "D:\\куда", 0);
}
Имена файлов для копирования можно хранить в массиве, как у вас:
string files[3] = {"one.txt", "two.txt", "three.txt"};
причём если массив при объявлении сразу инициализируется, то размер можно не указывать:
string files[] = {"one.txt", "two.txt", "three.txt"};
или можно хранить имена файлов в векторе (вектор более гибок, его размер можно изменять, также его удобней передавать в функции):
vector<string> files = {"one.txt", "two.txt", "three.txt"};
Самый простой способ — итерироваться используя индексы. Если число элементов известно, то условие завершения цикла можно записать как i < число_элементов
:
for (int i = 0; i < 3; ++i) {
string file = files[i];
// дальше работаем с переменной `file`
Если число элементов неизвестно, то в случае вектора его можно получить используя метод vector::size()
:
for (int i = 0; i < files.size(); ++i) {
string file = files[i];
// дальше работаем с переменной `file`
Также есть сокращённая удобная форма итерирования без индексов:
for (string file : files) {
// дальше работаем с переменной `file`
Кажется тут здесь достаточно получить строки пути-источника и пути-назначения, это можно сделать с помощью конкатенации:
string source = "E:\\" + file;
string destination = "D:\\" + file;
Дальше эти переменные можно передать в функцию копирования файлов:
CopyFile(source.c_str(), destination.c_str(), false);
Полный код на Ideone
Из выше предложенного решения, я решил немного изменить его и добавил функцию PathCombine В итоге всё скопировалось как нужно.
#include <iostream>
#include <windows.h>
#include <vector>
#include "Shlwapi.h"
#pragma comment(lib,"ShLwApi.Lib") // для PathCombine
using namespace std;
int main() {
vector<string> files = { "one.txt", "two.txt", "three.txt" };
TCHAR t1Dir[MAX_PATH + 2] = { 0 };
TCHAR t2Dir[MAX_PATH + 2] = { 0 };
for (auto file : files) {
auto source = PathCombine(t1Dir, "E:\\", file.c_str());
auto destination = PathCombine(t2Dir, "D:\\", file.c_str());
CopyFile(source, destination, false);
}
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Даны 2 строки, состоящие из слов, разделенных пробеламиОбьеденить обе строки и поменять второе и третье слово местами
Доброго времени суток, есть проблема с 2мя задачами по cppЕжели кто осилит - гляньте и дайте вердикт, правильно или нет (по возможности с пояснением...
Как в с++ манипулировать данными из текстового файла, которые находятся на одной или нескольких строках?