gpt4 book ai didi

c++ - 将bash参数传递给C++

转载 作者:行者123 更新时间:2023-12-01 15:10:55 27 4
gpt4 key购买 nike

我尝试将两个参数从bash传递到要使用的c++程序,但似乎无法使其完全正确地工作。我会在Linux命令行中使用./bash "Turtle" "Cat"命令。

#!/bin/bash
./main.out $1 $2

但是C++文件只能从 ./main.out中读取 argvcout只会打印 ./main.out的剪切版本,例如 ./main.out/main.outmain.out。我是否在bash文件的放置位置中错误地使用了参数?
int main(int argc, char *argv[]) {
cout << argv+0 << endl;
cout << argv+1 << endl;
cout << argv+2 << endl;
return 0;
}

最佳答案

这是因为您没有将参数打印为字符串,而是打印了它们的内存位置。在clang++-9(我在其中进行了测试)中,这是将指针传递给std::cout时发生的情况,在许多编译器中(MSVC,如果我错了,请更正我),这只会打印任何内容。

您需要做的是将其作为数组索引引用并打印

int main(int argc, char **argv) {
cout << argv[0] << endl;
cout << argv[1] << endl;
cout << argv[2] << endl;
return 0;
}

上面的代码对我来说很好(使用clang++-9编译时,可以在执行时手动传递参数)。如果要使用此代码,还应检查是否至少有3个参数( argc的值),否则在为argv编制索引时可能指向无效的内存

还请尝试避免使用std::endl并使用“\ n”代替,std::endl不必要地刷新缓冲区,并且不需要99%的时间

关于c++ - 将bash参数传递给C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343238/

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