У меня есть несколько скриптов Python для обработки объекта json, полученного от некоторого API из Интернета. Теперь мое основное приложение написано на C++ (его для GUI и для моей защиты ключа API). Я беру 2 входа от пользователя. Один из них - прозвище, и он может иметь пробелы. Теперь, когда я прохожу их в аргументах к программе (теперь его только записывается в виде консольного приложения) C++ это работает, когда я просто использовать ""
, но потом:Разбор argv с пробелами для скрипта Python из 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 значения без ""
, и именно поэтому он не работает g (я попытался передать его сам в cmdline с кавычками - он работал). Однако он работает на Linux. Как передать эти значения с пробелами?