C ++,逐字符地将字符从文件中读取到矢量<char>中

时间:2015-12-05 06:00:19

标签: c++ vector fstream ifstream

我正在尝试读取名为&#34; board.txt&#34;的文件的前7个字符。进入矢量&lt;&#39; char&gt;但出于某种原因我遇到了问题。我对C ++不太熟悉所以任何建议都会受到赞赏,这是我到目前为止的代码

    //rack
int charCount = 0;
char ch;

ifstream rackIn("board.txt");

while(rackIn.get(ch) && charCount < 7){
    this->getMyRack().push_back(ch);
}

这是上面代码中使用的函数getMyRack:

vector<char> board::getMyRack(){
    return this->myRack;
}

myRack是一个char矢量

我试着用我的主要测试这个:

for (int i = 0; i < test->getMyRack().size(); ++i){
    cout << test->getMyRack().at(i);
} 

但它没有输出任何东西,为什么我正在阅读的字符没有被添加到我的字符向量中?

2 个答案:

答案 0 :(得分:2)

因为你没有在你的向量中加入char。您的函数getMyRack()返回向量但不返回向量的地址。您可以向类板添加方法以添加char,例如:

 void board::addChar(char c){
     this->myRack.push_back(c);
   }

然后调用此函数:

 while(rackIn.get(ch) && charCount < 7){
    this->addChar(ch);   
  }

或更改功能的返回类型。

答案 1 :(得分:0)

std::string str;
   int char_count=0;
    // Read the next line from File untill it reaches the 7.
    while (std::getline(in, str)&& char_count!=7)
    {
        // Line contains string of length > 0 then save it in vector
        if (str.size() > 0)
            your_char_vector.push_back(str);
              char_count++;
           if(char_count==7)
              break;
    }