C++, чтение символов в вектор<char> из файла, символ за символом

Я пытаюсь прочитать первые 7 символов файла с именем "board.txt" в вектор<'char>, но у меня возникли проблемы по какой-то причине. Я не слишком знаком с 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 - это символ-вектор

Я попытался проверить это в моем основном с помощью этого:

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

но он ничего не выводит, почему символы, которые я читаю, не добавляются в мои векторы символов?

3 ответа

Решение

Потому что вы не помещаете символ в свой вектор. Ваша функция getMyRack() возвращает вектор, но не адрес вашего вектора. Вы можете добавить метод к вашей доске классов для добавления символа, например:

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

И затем вызовите эту функцию:

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

Или измените тип возврата вашей функции.

  1. прочитать первую строку или (сколько строк требуется) из файла в строку

  2. создать подстроку из 7 символов с начала

               std::ifstream file("board.txt");
    
       std::string str;
    
        // to read single line
    
        std::getline(file, str);
    
      // to read 7 chars 
    
      str= str.substr(0,7); 
    
      vector<char> char_buf;
    
      for(size_t i =0; i <= str.size();i++)
      {
    
         char_buf.push_back(str[i]) 
    
     }
     // use the char_buf 
    

проще или второй способ использовать

                  #include<fstream> // for ifstream
              
            #include <cstdlib> // for exit()

            std::string file_name ="board.txt";
            
            std::ifstream input_stream;
           
            std::vector<char> char_buf;
            
             input_stream.open(file_name); 

            if(input_stream.fail()) { exit(0);}

             int char_no=0;
            
           while(i<=7)
                      
            {
             char c = input_stream.get();
              char_buf.push_back(c);
               i++;              
             }
             
           // use char_buf
          
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;
    }
Другие вопросы по тегам