windows, c ++: отправить файл в exe (решение c ++) и прочитать данные из отправленного файла

Моя цель — отправить произвольный текстовый файл в исполняемый файл, который является сборкой проекта C ++. В проекте C ++ я хотел бы прочитать файл, который был отправлен в EXE. Следовательно, я думаю, что мне нужно передать путь отправленного файла к приложению (exe).

Мой код на С ++ [работает!]:

#include "stdafx.h"#include <string.h>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
std::string readLineFromInput;

ifstream readFile("input.txt"); // This is explizit.
// What I need is a dependency of passed path.
getline(readFile, readLineFromInput);

ofstream newFile;
newFile.open("output.txt");
newFile << readLineFromInput << "\n";

newFile.close();
readFile.close();
}

Моя конфигурация Windows:

По следующему пути я создал ярлык для exe (сборка проекта c ++):
C: \ Users {User} \ AppData \ Roaming \ Microsoft \ Windows \ SendTo

Вопрос:

Я хочу щелкнуть правой кнопкой мыши произвольный текстовый файл и передать его (SendTo) в исполняемый файл. Как я могу передать путь отправленного файла в качестве аргумента приложению, чтобы приложение могло прочитать отправленный файл?

Я полагаю, что когда путь передается в качестве аргумента, строка кода должна выглядеть следующим образом:

ifstream readFile(argv[1]);

Большое спасибо!

Дэвид

1

Решение

Используете ли вы SendTo или же OpenWithщелкнутое имя файла будет передано вашему исполняемому файлу в качестве параметра командной строки. Таким образом, argv[] массив будет содержать имя файла (в argv[1], если ваш SendTo ярлык определяет дополнительные параметры командной строки, в этом случае вам придется настроить argv[] индекс соответственно).

Я только что сделал тест с SendTo а также argv[1] работает отлично. Просто убедитесь, что вы проверите argc перед попыткой открыть имя файла, например:

int _tmain(int argc, _TCHAR* argv[])
{
if (argc > 1)
{
std::string readLineFromInput;

std::ifstream readFile(argv[1]);
if (readFile)
std::getline(readFile, readLineFromInput);

std::ofstream newFile(_T("output.txt"));
if (newFile)
newFile << readLineFromInput << "\n";
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]