Моя цель — отправить произвольный текстовый файл в исполняемый файл, который является сборкой проекта 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]);
Большое спасибо!
Дэвид
Используете ли вы 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";
}
}
Других решений пока нет …