2012-03-12 82 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,这是一本很好的书。


关于你循环,我会建议,以填补在单条线路的线路列表,特别是如果你正计划加载故事(如夫妇兆的单个故事)。