2017-07-15 55 views
0

我寫(學習),我希望用戶能夠輸入一個代碼OpenCV的簡歷:: string的文件名(.XML)和一個類型參數C++ main函數的輸入參數

我的主要功能是

int main(int argc, const** argv) { 
    ... 

在cmd.exe的,我希望該計劃被稱爲像

> App.exe cascadedClassifier.xml 0.5 

哪裏cascadedClassifier.xml是用戶選擇分類和0.5是double類型(框架)

我的問題之一是爲什麼輸入參數是字符類型,但加載分類器文件的函數需要cv::String type,但它仍然在cmd.exe中工作,即使它們是兩種不同的類型的論點?

另一個問題是我應該怎麼做主函數的輸入參數,用戶可以自由地爲cmd.exe中的程序分配一個雙重類型的輸入?

在此先感謝。

回答

5
  1. C++語言規範定義了int main(int argc, char* argv[])entrypoint function - 它無關,與OpenCV的根本 - 同樣的OpenCV不關心你的程序的入口點之一:OpenCV的是一個庫,而不是一個應用程序框架(如MFC或QT)。

  2. 的OpenCV的cv::String類型defines a constructor from const char* s將被用來提供an implicit conversioncv::String

  3. 所有命令行參數通過argv傳入的,則無法在與標準C/C++ main入口點非char型參數傳遞(這是因爲C和C++不定義慣例用於使非不像例如PowerShell,其中Cmdlet參數是根據.NET類型定義的)。您需要使用atofsscanf將參數轉換回有類型的數據。

1

const char*可以根據the official cv::String Class Reference隱式轉換爲cv::String
雙重輸入在命令行中在技術上是不可能的。您可以使用atof(const char*)函數將char*類型轉換爲您的函數中的float/double類型。