В настоящее время пытается написать программу, которая попросит пользователя ввести их для строки, а затем прочесть эти значения через итератор. Последним шагом для этой программы было бы применить простой кесаревый сдвиг к сообщению, прежде чем отображать его обратно пользователю. Однако, поскольку я, кажется, сделал ошибку, которая заставляет программу пропустить цикл «for» (или какой бы ни был цикл, который я использую, я пробовал все: от «for» до «while» до «if, else»). Я относительно новичок в C++, поэтому я надеюсь, что я просто настроил свой цикл неправильно, несмотря на все мои усилия.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;
}
Я потратил немало времени на изучение подобных ситуаций, но, насколько я могу сказать, я пропустил подводные камни другие попали в подобных ситуациях. Конечно, будучи новым, я всегда мог ошибаться, и поэтому любая помощь была бы очень оценена.
d = 0; (std :: cin >> message, d! = 0) всегда будет ложным (и не войдет в цикл while). Что вы пытались сделать здесь с d? – selalerer
Целью было установить триггер, где цикл while завершится нажатием клавиши «enter», хотя после того, как вы вернулись с ответом nullptr, я вижу, что проблема лежала в первом цикле, а не во втором. –