Ошибка отладки - std :: getline

std::getline(std::cin, time[d]);

Я новичок в этом, и это первый случай, когда я столкнулся с ошибкой после компиляции.

Я думаю, что ошибка изолирована от этой строки, но опять же я не слишком уверен.

#include "stdafx.h"
#include <string>
#include <iostream>
#include <limits>
#include <stdlib.h>
#include <vector>
#include <cstdlib>

int main()
{
std::vector<std::string> time(24);
size_t d;
int a;
restart: 

std::cout << "what time of day would you like to write the reflection? (0-23)" << std::endl;
std::cin >> d;

if (d > 23)
{
 std::cout << "Please enter a time of day between 0 - 23" << std::endl;

 system("PAUSE"); 
 system("CLS");
 goto restart;
}
else 

std::cout << "What would you like to have inside of that?" << std::endl;
std::cout << "Please enter a sentence: ";
std::getline(std::cin, time[d]);

std::cout << "Is this what you wrote?" << std::endl;
std::cout << "[" << time[d] << "]" << std::endl;

system("pause");

std::cout << "To add a new reflection press 1" << std::endl;
std::cout << "To output all of the reflections press 2" << std::endl;
std::cout << "To terminate program press 3" << std::endl;
std::cin >> a; 

if (a == 1)
{
 goto restart;
}
if (a == 2)
{
 system("pause");

 std::cout << time[0] << std::endl;
 std::cout << time[1] << std::endl;
 std::cout << time[2] << std::endl;
 std::cout << time[3] << std::endl;
 std::cout << time[4] << std::endl;
 std::cout << time[5] << std::endl;
 std::cout << time[6] << std::endl;
 std::cout << time[7] << std::endl;
 std::cout << time[8] << std::endl;
 std::cout << time[9] << std::endl;
 std::cout << time[10] << std::endl;
 std::cout << time[11] << std::endl;
 std::cout << time[12] << std::endl;
 std::cout << time[13] << std::endl;
 std::cout << time[14] << std::endl;
 std::cout << time[15] << std::endl;
 std::cout << time[16] << std::endl;
 std::cout << time[17] << std::endl;
 std::cout << time[18] << std::endl;
 std::cout << time[19] << std::endl;
 std::cout << time[20] << std::endl;
 std::cout << time[21] << std::endl;
 std::cout << time[22] << std::endl;
 std::cout << time[23] << std::endl;

 system("pause");
}
else
 system("pause");
return 0;
</std::string></cstdlib></vector></stdlib.h></limits></iostream></string>

}

1 ответ

Вы объявили только time size=1. Таким образом, вы можете распечатать только первое содержимое.

Чтобы заставить его работать, вы можете добавить что-то вроде

time.resize(24); // min:24, as you print time[23] later

чтобы сделать это достаточно, чтобы держать контент.

Или вам нужно удалить:

std::cout << time[1] << std::endl;
std::cout << time[2] << std::endl;
std::cout << time[3] << std::endl;
std::cout << time[4] << std::endl;
std::cout << time[5] << std::endl;
std::cout << time[6] << std::endl;
std::cout << time[7] << std::endl;
std::cout << time[8] << std::endl;
std::cout << time[9] << std::endl;
std::cout << time[10] << std::endl;
std::cout << time[11] << std::endl;
std::cout << time[12] << std::endl;
std::cout << time[13] << std::endl;
std::cout << time[14] << std::endl;
std::cout << time[15] << std::endl;
std::cout << time[16] << std::endl;
std::cout << time[17] << std::endl;
std::cout << time[18] << std::endl;
std::cout << time[19] << std::endl;
std::cout << time[20] << std::endl;
std::cout << time[21] << std::endl;
std::cout << time[22] << std::endl;
std::cout << time[23] << std::endl;

licensed under cc by-sa 3.0 with attribution.