2016-11-29 27 views
-2

我想通過獲取用戶輸入來打開一個文本文件。我想用C++中的記事本打開一個文件,但是如何?

system(topicName.c_str()); 

不工作,其中topicName是用戶輸入。

即使作爲一個用戶,我輸入它不與相應的文件打開文件(.txt)的名稱權

cout << "Intro To C " <<endl; 
cout << "Intro To C++" <<endl; 
cout << "Intro To Java " <<endl; 

cout << "\t\tWhich Topic You Want to edit: "; 
cin.ignore(1000, '\n'); 
getline(cin, topicName); 

system(topicName.c_str()); 
+0

的'system'功能運行的程序。你最有可能不會有一個名爲'Intro'的程序,它的參數是'To'和'C'(例如)。假設你在Windows上(因爲你提到了「記事本」),請閱讀[this' system'參考](https://msdn.microsoft.com/en-us/library/277bwbdz.aspx)以獲取更多信息。 –

+0

我明白了。但它使用例如系統(「topiclist.txt」)時正在工作。 如果這是應該的方式,那麼有什麼其他的替代方案可以從用戶那裏獲得輸入並用相應的名稱打開文件? –

+0

發佈一個可以重現問題的[最小,**完整**可驗證示例](https://stackoverflow.com/help/mcve)。我很難看清那種「忽略」的意思。您只有一個輸入操作:包含文件名的行後跟一個換行符。這意味着'ignore'會消耗(並且不辜負它的名字)長達1000個字符,直到換行(大概是你的文件名)。因此,讓你盯着閃爍的提示,沒有什麼可以顯示的。或者你在輸入中輸入**兩行**行嗎?發佈一個真正的,*完整*,'main()',這會產生你的問題。 – WhozCraig

回答

3

假設你已經在目錄下面的文件中,你正在運行程序:

File List

接着,下面的代碼將成爲你的工作:

#include <iostream> 
#include <stdlib.h> 

using namespace std; 

int main() { 
    cout << "Intro To C" << endl; 
    cout << "Intro To C++" << endl; 
    cout << "Intro To Java" << endl; 

    string topicName; 

    cout << "\t\tWhich Topic You Want to edit: "; 
    getline(cin, topicName); 

    topicName = "notepad \"" + topicName + "\""; 

    system(topicName.c_str()); 
    return 0; 
} 

然後在運行時,我們得到以下的輸出:

Intro To C 
Intro To C++ 
Intro To Java 
     Which Topic You Want to edit: Intro To Java 

在打字時,該文件將在記事本中,如果你在Windows系統上運行它打開。如果您使用不同的操作系統,請相應地更改您的程序。

Output

相關問題