在向量中存储字符串有seg错误

时间:2017-07-25 05:00:41

标签: c++ vector

我正在尝试从文件中读取单词并将它们存储到向量中,但索引不起作用。是什么原因导致它一直存在seg错误?为什么push_back()有效?什么是使用索引和push_back()之间的机制差异?

vector<string> readWordToArray(string fileName, int wordCount){
    vector<string> wordArray;
    fstream inFile;
    inFile.open(fileName);
    string word;
    int index = 0;

    while(inFile >> word){
        // doesnt work, need to change to wordArray.push_back(word);
        wordArray[index] = word;   
        index++;
    }
    return wordArray;
}

2 个答案:

答案 0 :(得分:0)

<?php $connect=mysqli_connect("localhost","root","","shopping"); $output=array(); $query="select serial,name,description,price from products"; $result=mysqli_query($connect,$query); if(mysqli_num_rows($result)>0) { while ($row=mysqli_fetch_array($result)) { $output[]=$row; } echo json_encode($output); } ?> 用于获取向量中已存在的元素的引用,我非常确定使用超出范围的索引是未定义的行为。

要添加一个到最后,您需要使用(正如您在代码注释中指出的那样):

wordArray[index]

答案 1 :(得分:-2)

你应该分配你的矢量。 vector.resize(int n)如果你想像数组一样对待。否则,您必须使用Push_back()在向量的末尾分配新内存。请查看详细信息的{blowy link >> enter link description here