1
インターネットからいくつかのAPIから受け取ったjsonオブジェクトを処理するPythonスクリプトがいくつかあります。今、私の主なアプリはC + +で書かれています(GUIと私のAPIキー保護用)。私はユーザーから2つの入力を受け取ります。それらの1つはニックネームであり、スペースを持つことができます。今、私はCに引数に渡すとき++、プログラム(現在、唯一のコンソールアプリケーションとして書かれた)、私はちょうど""
を使用する場合、それは動作しますが、:C++からのPythonスクリプトへのスペースでのargvの解析
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;
}
そして第二部
は、このコードの一部です:だからC++が""
せずに2つの値を渡すように思える
def main(argv):
API_KEY = argv[1]
NAME = argv[2]
print("ARGV:")
for i in argv:
print(i)
print("END OF ARGV")
、それが働いていない理由ですg(私は引用符でcmdlineでそれを自分自身に渡そうとしました - それがうまくいった)。 Linuxでも動作します。これらの値をスペースでどうやって渡すことができますか?