0

目前正在尝试编写一个程序,该程序将要求用户输入字符串,然后通过迭代器读取这些值。该程序的最后一步是在将消息显示回用户之前对消息应用一个简单的凯撒变换。然而,由于我似乎犯了一个错误,导致程序跳过“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;
}

我花了相当多的时间研究类似的情况,但据我所知,我错过了其他人在类似情况下陷入的陷阱。当然,作为新手,我可能总是错的,因此非常感谢任何帮助。

4

1 回答 1

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>在顶部为此工作。

于 2013-05-04T18:28:22.633 回答