gpt4 book ai didi

c++ - 从不同的二进制名称运行相同的 C++ 程序

转载 作者:行者123 更新时间:2023-11-30 00:41:25 26 4
gpt4 key购买 nike

好吧,作为家庭作业,我的教授希望我们用 C++ 编写一个程序,将英里转换为公里。我做了所有这些,程序运行了。但是,他有这种调用程序的特殊方式:

The program's usage options are based on the NAME of the BINARY FILE. If the program name is 'km2miles', the program interprets the command line argument as a kilometer value to convert to miles. If the name is 'miles2km', then it interprets as miles being converted to km. Since the first command line argument, argv[0] is always the program's name, you can use its value to decide which function to call.

我在这个项目中只有 3 个文件(他告诉我们只有这 3 个):转换.cpp距离.cpp距离.h

Distance.h 和.cpp 有不同的函数将Mi 转换为Km 和反之,convert.cpp 有主要功能。然而,我知道如何调用这个程序(在编译之后)的唯一方法是:

./转换10

其中 10 是要转换的数字。他说应该这样称呼:

$ km2miles 100

$ miles2km 60

我不知道如何通过使用不同的名称来让程序以不同的方式运行...尤其是当该名称甚至不运行该程序时!帮助将不胜感激。

最佳答案

您可以:

  • 构建时指定名称,并构建两次
  • 在 Windows 上:copy convert miles2kms;复制转换kms2miles
  • 在 UNIX/Linux 上:cp convert miles2kms; cp 转换 kms2miles
  • 在 UNIX/Linx(更好)上:建立链接或符号链接(symbolic link):ln -s convert miles2kms; ln -s 转换 kms2miles

在你的程序中,你应该做这样的事情:

#include <string>
#include <iostream>

int main(int argc, const char* argv[])
{
std::string program_name = argv[0];

if (argc != 2) {
std::cerr << "usage: " << program_name << " <value>\n";
return 0;
}
if (/* TODO: what would go here? */)
...
else
...
}

关于c++ - 从不同的二进制名称运行相同的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3705960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com