如何在 C++ 中将文件字符串用作命令
How to use file strings as commands in c++
我正在尝试使用 Visual Studio 2015 在 Windows 10 上制作一个程序,它将 sim-link 某些文件到某些位置。我正在尝试制作一个包含文件位置的文本文件,以及要使用的 sim-link 目的地。
这是 properties.txt
文件中的文件数据示例:
FileLocation: "Z:\Folder\file.txt"
FileMkdirLocation: "Z:\Folder2\file.txt"
我想通过更改 properties.txt
中的数据来使用类似 system(mkdir "sim-link_file_location" "file_location")
的东西。我希望能够添加超过 1 个文件,而无需重新编译程序并为每个文件逐一编写每个命令。
问题是我不知道如何让命令使用文件中的数据。
编辑:我设法找到了一种方法,但在编译程序时出现错误。我使用此代码:
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
//initialization of Properties File used
ifstream PropertiesFile ("PropertiesFile.txt");
int main()
{
//initialization of variables used
int input_option;
char FileLocation[256], Command[]="mklink ";
// string FileLocation, Command;
PropertiesFile >> FileLocation;
/* switch (input_option)
{
case "add all mods":
}
*/
cout << "FileLocation: " << FileLocation;
cout << endl;
strcat(Command, FileLocation);
Command[strlen(FileLocation)] = '[=10=]';
cout << Command;
cout << endl;
//system(command);
system("pause");
return 0;
}
我知道我还没有使用所有变量。
它告诉我 "strcat" 已被弃用并改用 "strcat_s" ,当我用它替换时,我得到
"Debug Assertion Failed - Expression: (L"Buffer is too small" && 0)"
在linux中创建软link的命令是:ln -s <source> <destination>
您可以在 system("");
调用中使用它,但是在您继续编写代码之前,您必须确保内核已完成执行该命令。
之后您可以像阅读原始文件一样阅读 link。
我必须使 "Command" 字符大于 "FileLocation",因为这样 strcat_s 将无法复制内容。之后程序运行正常,没有出现其他断言错误。
我正在尝试使用 Visual Studio 2015 在 Windows 10 上制作一个程序,它将 sim-link 某些文件到某些位置。我正在尝试制作一个包含文件位置的文本文件,以及要使用的 sim-link 目的地。
这是 properties.txt
文件中的文件数据示例:
FileLocation: "Z:\Folder\file.txt"
FileMkdirLocation: "Z:\Folder2\file.txt"
我想通过更改 properties.txt
中的数据来使用类似 system(mkdir "sim-link_file_location" "file_location")
的东西。我希望能够添加超过 1 个文件,而无需重新编译程序并为每个文件逐一编写每个命令。
问题是我不知道如何让命令使用文件中的数据。
编辑:我设法找到了一种方法,但在编译程序时出现错误。我使用此代码:
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
//initialization of Properties File used
ifstream PropertiesFile ("PropertiesFile.txt");
int main()
{
//initialization of variables used
int input_option;
char FileLocation[256], Command[]="mklink ";
// string FileLocation, Command;
PropertiesFile >> FileLocation;
/* switch (input_option)
{
case "add all mods":
}
*/
cout << "FileLocation: " << FileLocation;
cout << endl;
strcat(Command, FileLocation);
Command[strlen(FileLocation)] = '[=10=]';
cout << Command;
cout << endl;
//system(command);
system("pause");
return 0;
}
我知道我还没有使用所有变量。 它告诉我 "strcat" 已被弃用并改用 "strcat_s" ,当我用它替换时,我得到
"Debug Assertion Failed - Expression: (L"Buffer is too small" && 0)"
在linux中创建软link的命令是:ln -s <source> <destination>
您可以在 system("");
调用中使用它,但是在您继续编写代码之前,您必须确保内核已完成执行该命令。
之后您可以像阅读原始文件一样阅读 link。
我必须使 "Command" 字符大于 "FileLocation",因为这样 strcat_s 将无法复制内容。之后程序运行正常,没有出现其他断言错误。