C ++: чтение элементов из вектора, циклы пропускаются

В настоящее время пытаюсь написать программу, которая будет запрашивать у пользователя ввод строки, а затем считывать эти значения с помощью итератора. Последним шагом для этой программы будет применение простого цезаря к сообщению перед его отображением пользователю. Однако, поскольку я, похоже, допустил ошибку, из-за которой программа пропустила цикл «for» (или какой бы цикл я ни использовал, я перепробовал все, начиная с циклов «for» и «while» и заканчивая циклами «if, else»). Я относительно новичок в C ++, поэтому я надеюсь, что просто неправильно настроил свой цикл, несмотря на все мои усилия.

#include <iostream>
#include <vector>
#include <string>

int main () {
std::vector <std::string> vector_1;
int c;
int d = 0;
int i = 0;
std::string message;
std::vector<std::string>::iterator it_1;

std::cout << "Please input the message to be Caesar Shifted \n";

while (std::cin >> message, d != 0) {
vector_1.push_back (message);
++d;
}

std::cout << "Encrypted message is";

for (std::vector<std::string>::iterator it_1 = vector_1.begin (); it_1 != vector_1.end (); ++it_1) {

std::cout << *it_1;
}

return 0;
}

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

0

Решение

it_1 < vector_1.end ()

должно быть

it_1 != vector_1.end ()

а также

while (std::cin >> message, d != 0) {
vector_1.push_back (message);
++d;
}

должно быть

getline(std::cin, message);
std::stringstream ss(message);
std::string temp;
while (ss >> temp)
vector_1.push_back(temp);

Вам захочется #include <sstream> наверху, чтобы это работало.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]