Tôi đang sử dụng trình thông dịch trực tuyến ideone (http://ideone.com/) để kiểm tra một số chương trình C++ và Python. Làm cách nào để chỉ định các đối số dòng lệnh thay vì sử dụng đầu vào STDIN?Làm thế nào để vượt qua các đối số dòng lệnh khi sử dụng ideone?
Trả lời
Hình như bạn có thể không, nhưng một nhanh Hack nên làm các trick:
static char * const ARGV[] = { "myprog", "hello", "world", NULL };
int main(int argc, char * argv[])
{
argc = 3;
argv = ARGV;
// ...
}
Hoặc chuyển đổi các đầu vào tiêu chuẩn vào args:
#include <vector>
#include <string>
#include <iterator>
#include <iostream>
std::vector<char *> fabricate(std::vector<std::string> & v)
{
std::vector<char *> res(v.size() + 1, NULL);
for (std::size_t i = 0; i != v.size(); ++i) { res[i] = &v[i][0]; }
return res;
}
std::vector<std::string> args_vector((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
std::vector<char *> argv_vector = fabricate(args_vector);
int main(int argc, char * argv[])
{
argc = args_vector.size();
argv = argv_vector.data();
// ...
}
Tôi đoán điều đó sẽ phải làm. Làm thế nào về các chương trình Python? – lifebalance
@lifebalance: err ... "tương tự"? :-) –
Tôi thích phương pháp thứ 2. Sẽ đánh giá cao một số mã python tương đương. Cảm ơn! – lifebalance
Chỉ cần khởi tạo để mô phỏng các đối số dòng lệnh
static char *argv[] = {"program_name", "1st argument", "2nd argument", NULL};
static int argc = 3;
int main() {
}
In python you c một hardcode như thế này:
import sys
print sys.argv
sys.argv[1:] = ["test1", "test2"]
print sys.argv
Sản lượng này sẽ:
['prog.py']
['prog.py', 'test1', 'test2']
Để đọc từ stdin:
import sys
import shlex
print sys.argv
sys.argv[1:] = shlex.split(None)
print sys.argv
- 1. PowerShell vượt qua đối số dòng lệnh
- 2. Làm thế nào để vượt qua mảng đối số để Powershell dòng lệnh
- 3. Làm thế nào để vượt qua các đối số bằng cách sử dụng std :: mem_fun
- 4. Làm thế nào để vượt qua nhiều giá trị thông qua đối số lệnh trong Asp.net?
- 5. Làm thế nào để vượt qua đối số trong hy vọng thông qua dòng lệnh trong shell script
- 6. Python, kiểm tra đơn vị - Vượt qua các đối số dòng lệnh để thiết lập unittest.TestCase
- 7. Làm thế nào để vượt qua một đối số khi gọi một tập tin xem?
- 8. Làm thế nào để sử dụng va_args để vượt qua các đối số trên (tham số variadic, dấu ba chấm)
- 9. Làm cách nào để vượt qua các đối số bội số trong processStartInfo?
- 10. Làm thế nào để vượt qua hai tham số khi sử dụng std :: mem_fun?
- 11. Làm thế nào để vượt qua Drawable sử dụng Parcelable
- 12. Vượt qua đối số dòng lệnh cho ứng dụng OOB Silverlight 4
- 13. Vượt qua một đối số dòng lệnh để jstestdriver JAR từ ANT?
- 14. Vượt qua đường dẫn thư viện dưới dạng đối số dòng lệnh để setup.py
- 15. Làm thế nào để vượt qua đối số cho PowerShell qua C#
- 16. Làm thế nào để nắm bắt các đối số dòng lệnh trong ứng dụng WPF?
- 17. Làm thế nào để vượt qua tham số dòng lệnh với không gian trong tệp hàng loạt
- 18. Làm thế nào để vượt qua các đối số thêm vào trang trí python?
- 19. Vượt qua ràng buộc hoặc đối số với ERB từ dòng lệnh
- 20. Thêm đối số dòng lệnh để ứng dụng VB.Net
- 21. Sử dụng Ant để chạy chương trình với đối số dòng lệnh
- 22. Bash: Lấy đối số dòng lệnh đầu tiên và vượt qua phần còn lại
- 23. Tại sao chúng ta không gặp lỗi khi chúng ta không vượt qua bất kỳ đối số dòng lệnh nào?
- 24. Lập trình C: Làm thế nào để sử dụng gdb với Makefile và các đối số dòng lệnh?
- 25. Làm thế nào để vượt qua đối số variadic trong khi thêm một số khác trong Scala?
- 26. Làm thế nào để vượt qua một con trỏ để LuaJIT ffi được sử dụng như là đối số ra?
- 27. Làm thế nào để đặt đối số dòng lệnh của chương trình cho GHCi?
- 28. Làm cách nào để chuyển đối số dòng lệnh cho ứng dụng WinForms?
- 29. Làm thế nào để chuyển đối số từ dòng lệnh đến gradle
- 30. Làm thế nào để phát hiện các đối số dòng lệnh vim trong vimscript?
Từ những gì tôi có thể nói, nó không giống như bạn có thể. –