2012-03-12 65 views
-2

我正在創建一個程序,該程序只讀取文本的輸入文件,並在該輸入文件中創建單詞的矢量。我現在的程序只提示用戶輸入文件名,然後停止運行。我的文本文件只有3個字用於測試,但在程序結束時,我希望能夠讀取諸如故事等大型文本文件。
我的代碼:將單詞的輸入文件轉換爲矢量 - C++

#include<string> 
#include<iostream> 
#include<vector> 
#include<fstream> 


using namespace std; 


int main(){ 

string filename; //name of text file 
string wordsFromFile; //the words gathered from the text file 

cout << "Please enter the name of your text file" << endl; 
cin >> filename; 

ifstream fin(filename.c_str()); 

fin >> wordsFromFile; 

while(fin >> wordsFromFile) 
{ 
    fin >> wordsFromFile; 
    vector<string>word; 
    for(int i=0; i<=word.size(); i++) { 
     word.push_back(wordsFromFile); 
     cout << word[i];} 
    } 

    fin.close(); 
    return 0; 
} 
+1

你試過跟蹤它嗎?你真正的問題是什麼? – JTeagle 2012-03-12 17:52:58

+2

你的循環**方式**複雜。相反,說'std :: vector words((std :: istream_iterator(fin)),std :: istream_iterator());'並且完成它。 – 2012-03-12 17:57:04

+1

你的代碼沒有意義。你正在讀一個單詞,然後把它扔掉,然後讀一個單詞,扔掉它,然後讀另一個單詞並以一種過度複雜的方式將它添加到一個矢量中。請考慮從[入門書]開始(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – Philipp 2012-03-12 20:06:48

回答

0

關於您的實際問題

程序我現在只提示輸入文件名的用戶,然後停止之後運行。

既然你沒有做任何檢查,如果文件存在與否,它不會幫助你知道發生了什麼。有可能文件不在正確的文件夾中?您似乎沒有在文件名前使用任何路徑,可能是因爲您在提示中提供了完整路徑?

我有一本入門書。我在這個程序中試圖做的範圍不在本書中討論,儘管

通常很難找到一本關於你在做什麼的書。然而,如果你想了解更多關於C++的知識,我會推薦C++ Primer Plus,這是一本很好的書。


關於你循環,我會建議,以填補在單條線路的線路列表,特別是如果你正計劃加載故事(如夫婦兆的單個故事)。