В настоящее время пытаюсь написать программу, которая будет запрашивать у пользователя ввод строки, а затем считывать эти значения с помощью итератора. Последним шагом для этой программы будет применение простого цезаря к сообщению перед его отображением пользователю. Однако, поскольку я, похоже, допустил ошибку, из-за которой программа пропустила цикл «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;
}
Я потратил немало времени на изучение подобных ситуаций, но, насколько я могу судить, я пропустил ловушки, в которые попали другие люди в подобных ситуациях. Конечно, будучи новичком, я всегда мог ошибаться, поэтому любая помощь будет очень признательна.
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>
наверху, чтобы это работало.
Других решений пока нет …