我有一些Python脚本来处理从互联网上的某些API收到的json对象。现在,我的主应用程序是用C ++编写的(用于GUI和我的API密钥保护)。我从用户那里得到2个输入。其中一个是昵称,它可以有空格。现在,当我将它们传递给args到c ++程序(现在它只是作为控制台应用程序编写)时,它只在我使用""
时起作用,但随后:
W:\src>XD "nickname with spaces" summoner_by_name
nickname with spaces
summoner_by_name
python main.py API_KEY nickname with spaces summoner_by_name
ARGV:
main.py
API_KEY
nickname
with
spaces
summoner_by_name
END OF ARGV
所以第一部分是这段代码的一部分:
int main(int argc, char** argv){
std::string name = argv[1];
std::string command = argv[2];
std::cout << name << std::endl;
std::cout << command << std::endl;
std::cout << python + API_KEY + " " + name + " " + command << std::endl;
system((python + API_KEY + " " + name + " " + command).c_str());
return 0;
}
第二部分是此代码的一部分:
def main(argv):
API_KEY = argv[1]
NAME = argv[2]
print("ARGV:")
for i in argv:
print(i)
print("END OF ARGV")
所以看起来C ++在没有""
的情况下传递了2个值,这就是为什么它不能正常工作(我试图在带有引号的cmdline中传递它 - 它工作正常)。它适用于Linux。如何用空格传递这些值?
答案 0 :(得分:1)
在构建系统调用的命令行时,您可能需要自己引用字符串:
system((python + API_KEY + " \"" + name + "\" " + command).c_str());