Почему не сохраняется в векторе строка?

anubis1768

Здравствуйте! Проблема в том, что строки не сохраняются в векторе строк, хотя передаю их по ссылке:
#include <iostream>
#include <vector>
#include <fstream>
 
void readf( std::vector < std::string > &answer, 
            std::vector < std::string > &question,
            const int size ) {
                
    std::ifstream T_answers( "answers.txt" );
    std::ifstream T_questions( "questions.txt" );
    std::string temp;
    int i = 0;
    
    while( !T_answers.eof() ) {
        T_answers >> temp;
        answer[i] = temp;
        i++;
    }
    
    i = 0;
    while( !T_questions.eof() ) {
        T_questions >> temp;
        question[i] = temp;
        i++;
    }
}
 
int main() {
    const int size = 200;
    std::vector< std::string > answer( size );
    std::vector< std::string > question( size );
    readf( answer, question, size );
    
    for( int i = 0; i < size; i++ ) { //ничего не выводит 
        std::cout << answer[i] << std::endl;
    }
    
    return 0;
}
5 ответов

anubis1768

Всё сохраняется. У тебя видимо, в файле нету 200 строк. Подними скроллбар консоли вверх и увидишь ответы на свои вопросы Просто выводится много пустых строк вектора answer.


anubis1768

Оххх какая глупость, там же в цикле 200 отступов делает. Вот я дурак)) Спасибо Вот такой еще вопрос: а как узнать сколько элементов занято в векторе?


anubis1768

а как узнать сколько элементов занято в векторе?
метод size()?


anubis1768

Нет, size() возвратит 200, то есть всю величину вектора, а мне нужно только столько, сколько было считано.


anubis1768

#include <iostream>
#include <vector>
#include <fstream>
#include <string>
 
void readf( std::vector < std::string > &answer, 
            std::vector < std::string > &question,
            const int size ) {
                
    std::ifstream T_answers( "answers.txt" );
    std::ifstream T_questions( "questions.txt" );
    std::string temp;
    int i = 0;
    
    while( !T_answers.eof() ) {
        T_answers >> temp;
        answer[i] = temp;
        i++;
    }
    
    i = 0;
    while( !T_questions.eof() ) {
        T_questions >> temp;
        question[i] = temp;
        i++;
    }
}
 
int main() {
    const int size = 200;
    std::vector< std::string > answer( size );
    std::vector< std::string > question( size );
    readf( answer, question, size );
    
    int j = 0;
    for( int i = 0; i < size; i++ ) { 
        std::cout << answer[i] << std::endl;
        if (answer[i].empty()) {  // добавил
            j = i;
            break;
        }
    }
    std::cout << j << std::endl;
    system("PAUSE>0");
    return 0;
}