Программа на с++ не может открыть файл через cmd. Как исправить?
Пишу программу для сортировки txt файлов по папкам основываясь на содержимом файлов. По задумке, я задаю несколько слов для поиска в файле, и если хотя бы одно из них есть в нём, то файл перемещается в другую папку.
Собственно сам поиск реализовал через команду findstr вместе с _popen(), чтобы перехватить результат команды cmd можно было. По итогу получаю, что findstr не может открыть текстовый файл, хотя даже программу запускаю от имени администратора. Руками получается, а если код исполняет уже не выходит.
Не хочу весь код выкладывать поэтому вот рабочий его кусок:
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <memory>
#include <array>
#include <fstream>
using namespace std;
int main() {
char psBuffer[128];
FILE* pPipe;
string tmp_com = "findstr ";
string comn2 = "";
string comn = "";
ifstream inputFile("D:\\Downloads\\ vk.com \\flist.txt");
string selectedString;
string tmpstr = "";
system("cd D:\\Downloads\\ vk.com \\1");
if ( inputFile.is _open()) {
cout << "list of files is open!" << endl;
getline(inputFile, selectedString);
comn.append("findstr \"1girl\" ").append(selectedString);
if ((pPipe = _popen(comn.c_str(), "rt")) != NULL) {
fgets(psBuffer, 128, pPipe);
tmpstr = string(psBuffer);
int endOfFileVal = feof(pPipe);
int closeReturnVal = _pclose(pPipe);
}
else {
cout << "0000x0000" << endl;
}
}
else {
cerr << "errn" << endl;
exit;
}
system("pause");
}
А кто ж без исходника или его части, открывающей файлы, знает, кроме тебя - каких именно ошибок ты туда насадил? Ну и из постановки задачи совершенно непонятно, зачем здесь нужен вызов cmd.
Неправильно сформировал команду, неправильно склеил путь, не учёл работу с кодировками и т.д., тысячи их...
Без кода ни фига непонятно, вангую, что ты пытаешься скопировать файл, открытый твоей программой.
Не делай так, не используй внешние утилиты. В С++ есть все, чтобы работать с файлами самостоятельно.