什么是从.txt文件到vector <string>的文本的最佳方法? C ++ </字符串>

时间:2014-03-27 13:12:02

标签: c++ visual-studio mobile

我昨天问了一个问题,但我没有做任何事情。我正在使用带有橘子酱的视觉工作室,我已经在学习c ++,但我需要在这里完成工作,所以我要求你们给我们一些帮助和耐心。

我收到了一些回复,比如

std::ifstream inp("restrict_words.txt");
std::istream_iterator<std::string> inp_it(inp), inp_eof;
std::vector<std::string> words(inp_it, inp_eof);

// words now has ever whitespace separated string 
//  from the input file as a vector entry
for (auto s : words)
    std::cout << s << '\n';

std::ifstream ist("restrict_words.txt");
    std::string word;
    std::vector<std::string> readWords;
    while(ist >> word)
        readWords.push_back(word);
    //test
    for(unsigned i = 0; i != readWords.size(); ++i)
        std::cout << readWords.at(i) << '\n';

这是一件容易的事情,我无法做到这一点。

我的KingChatFilter.app和我的游戏文件夹中的聊天文件夹。在这个聊天文件夹里面,我有160个不同行的160个单词。

我需要做的就是读取这个txt,然后将它放在一个数组上,检查一下这个字符串是否与我想要的那个匹配,这样我就可以做其他的事了。

请有人让我理解这个谢谢:)

enter image description here

2 个答案:

答案 0 :(得分:1)

我写了几个函数来满足你的要求:

#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>


using namespace std;

// Reads the file line by line and put all lines into words vector.
void read_to_vector(const char* file_name, vector<string> &words) 
{
    ifstream input(file_name);
    string line;

    while (getline(input, line))
    {
        words.push_back(line);
    }
}

// Returns true if word is in words. False otherwise.
bool find_word(vector<string> &words, string word)
{
    vector<string>::iterator it; // In c++11 you can change this to
                                 // auto it;

    // Using std::find from algorithm library.
    it = find(words.begin(), words.end(), word);
    return it != words.end();     // If the end of vector words was reached, then word was NOT found.
}

int main()
{

    vector<string> words;
    string target = "level";

    read_to_vector("data.txt", words);


    if (find_word(words, target))
        cout << "Word " << target << " found" << endl;
    else
        cout << "Word " << target << " not found" << endl;

    return 0;
}

答案 1 :(得分:0)

以下是我用来逐行读取文件内容的工作代码。一个区别可能是你不检查打开文件是否成功。如果没有,至少有两个主要原因需要考虑:

  1. 无法在指定路径找到该文件
  2. 该文件已被其他人打开
  3. std::string fileNameWithPath = "..\\myFolder\\myfile.txt";
    std::ifstream inputFile;
    std::vector< std::string > fileContent;
    
    inputFile.open( fileNameWithPath.c_str(), std::ios::in | std::ios::binary );
    
    if( inputFile.is_open() )
    {
      std::string line;
      while( std::getline( testDataFile, line ) )
      {
        inputFile.push_back( line );
      }
    }
    
    inputFile.close();