【问题标题】:Processing command line arguments for a code in c++ for random and user input处理 C++ 中代码的命令行参数以进行随机和用户输入
【发布时间】:2013-10-21 11:22:31
【问题描述】:

我们的讲师要求我们通过以下方式将数据输入代码:

1.Random mode
Run with graphs generated by random number generator. The command line for 
this mode is: 
$ mst –r n d 
// run in a random connected graph with n vertices and d% of density. 
// See Performance measurements section for details. 


2.User Input mode
$mst -s file-name // read the input from a file ‘file-name’ for simple scheme
$mst -f file-name // read the input from a file ‘file-name’ for f-heap scheme

目前我已经写好代码并使用g++编译了:

g++ -o mst.o mst.cpp

我正在像这样从文件中获取输入:

./mst.o < data.txt

但是,我不知道如何满足上述要求。

【问题讨论】:

  • 你的意思是你不知道如何处理命令行参数?
  • 是的,这是正确的说法。
  • 查看getopt 或使用轻量级解决方案。
  • @remyabel:命令行看起来有点简单。只有三个选项只需读取第一个参数(如果它不存在则报告错误)然后使用if () {} else if () {} else if () {} else {/*error*/}。请注意,您无法打开字符串,因此您需要 else if :-)

标签: c++ input g++ command-line-arguments


【解决方案1】:

一个应用程序像这样在 main 中启动:

int main(int argc, char* argv[])

这些是命令行参数。

如果需要,您可以打印出来:

int main(int argc, char* argv[])
{
    std::cout << "Application: " << argv[0] << "\n";
    for(int loop =1 ;loop < argc; ++loop)
    {
        std::cout << "\tArg: " << loop << "   Value: " << argv[loop] << "\n";
    }
}

【讨论】:

    【解决方案2】:

    您需要检查argc和argv参数到main。如果argv 足够大,请检查argv[1] 以查看它是否是您需要处理的开关之一。如果是,则解码另一个argv 以获得您需要的数字或文件名。 argv[0] 通常是可执行文件的名称,不使用。

    【讨论】:

    • 足够大是什么意思?
    • @nitinsh99:他的意思是不要检查argv[x] 的值,x &gt;= argc
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2012-10-22
    • 2010-09-13
    • 2015-03-26
    相关资源
    最近更新 更多