将数据从数据输入到数组c ++

时间:2014-11-26 15:55:25

标签: c++ arrays file sorting input

所以我正在处理一个刽子手程序,我得到了包含我需要的单词的输入文件。现在的问题是如何将我从文件中输入的单词放入数组中? 任何帮助将不胜感激。谢谢!

enter code here
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <cstdlib>

using namespace std;

const int MAX_NUMS = 200;   // Constant for the maximum number of words.
const int MAX_GUESSES = 8;
const string LETTERS = "abcdefghijklmnopqrstuvwxyz";


//function prototypes
char   inputLetter();
int    findChar(char letter, string word);
string getGuessedWord(string secretWord, string lettersGuessed);

//main function
int main()
{
                // holds one word from input file
string secretWord;              // holds secret word to be guessed
string words[MAX_NUMS];         // holds list of words from input file
int randomValue;                // holds index of secret word
int count = 0;                  // holds number of words in the file

// Declare an ifstream object named myFile and open an input file
string line;

ifstream myfile ("p4words.txt");

if (myfile.is_open())

{

    while (! myfile.eof() )

    {

        getline (myfile,line);

        cout << line << endl;

    }

    myfile.close();

}

else cout << "Unable to open file";

// Input words from a file into words array

cout << count << " words loaded." << endl;

srand(static_cast<unsigned int>(time(0)));

3 个答案:

答案 0 :(得分:0)

如果你真的想把它们放入一个数组中,那么每次只需分配到下一个索引:

while (getline(myfile, line)) {
    words[count] = line;
    ++count;
    if (count == MAX_NUMS) {
        // this is all the space we have
        break;
    }
}

或者只是getline直接进入数组:

while (getline(myfile, words[count])) {
    ++count;
    if (count == MAX_NUMS) {
        break;
    }
}

虽然对于这个确切的事情,我们有vector,这样就不需要计算,也没有上限:

std::vector<std::string> words;

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

答案 1 :(得分:0)

除了Barry的回答

您还可以使用命令行执行并更改输入流,例如在创建.exe文件之后(编译/构建之后),如果文件名是&#34; program1.exe&#34; 并且文本文件是&#34; input.txt&#34; (在同一目录中)输入可以通过更改输入流

通过此文本文件提供给文件

在同一目录中打开命令行并写入

 program1.exe<input.txt 

根据您的需要,原始程序可以像

int main(){
    int arr[6];
    for(int i=1;i<=5;i++){
        std::cin>>arr[i];
    }
    std::cout<<"data entered";
}

input.txt就像

  

52 14 24 23 45

类似地,您可以通过在命令行中写入来更改输出流并将输出保存到另一个文件,例如output.txt

program1.exe<input.txt>output.txt     

答案 2 :(得分:0)

您可以直接从istream_iterator#include <iterator>)构建向量,例如:

std::vector<std::string> words((std::istream_iterator<std::string>(myfile)), 
        std::istream_iterator<std::string>());

()中的双(std::istream_iterator<std::string>(myfile))是需要避免最令人烦恼的解析。在C ++ 11中,可以简单地使用大括号初始化和写入

std::vector<std::string> words{std::istream_iterator<std::string>(myfile), {}};