2016-08-09 35 views
-1

我希望使用這個代碼打開的文件的名稱/路徑,並通過使用POPEN和argv [1](的文件名)

FILE* lsofFile_p = popen("c:\\adb install " + argv[1] , "r");

和argv跟蹤其輸出[1]這種方式給建設中的錯誤

+0

你會得到什麼錯誤?你參考了哪些庫 - 包括哪些庫? –

+0

這是C代碼。爲什麼使用C++標籤?在C++中,你有沒有從我的庫庫的#include 的#include 的#include 的#include 的#include

+0

是在構建給出一個錯誤FILE * lsofFile_p = popen(std :: string(「c:\\ adb install」)+ argv [1])。c_str();是因爲「r」,它在行 –

回答

1

這基本上是因爲你試圖將char[]陣列文字添加到char*類型:由於類型不匹配,編譯器不會這樣。

編寫(std::string("c:\\adb install ") + argv[1]).c_str()連接你的字符串將會修復它。這依賴於運算符將+加載到std::string,並且c_str()提取字符緩衝區。因此,在全:

FILE* lsofFile_p = popen((std::string("c:\\adb install ") + argv[1]).c_str(), "r");

難道雖然讀的argv該元素之前檢查的argc值。

+0

多數民衆贊成也比使用'FILE *'的更好的選擇... –

+0

中缺少的含義是什麼?我已經把全文放入了,你需要輸入:你的c_str()放在錯誤的地方。 – Bathsheba

+0

非常感謝你,但是請你添加一個引用鏈接,而不是我可以從中學習如何自定義這段代碼,例如我可以如何將它與char數組一起使用,因爲它會在此行中發生錯誤FILE * lsofFile_p = popen((std :: string(「c:\\ adb connect」)+ ip [20])。c_str,「r」); 和ip [20] = 192.168.156.655:6985例如 –