繁体   English   中英

如何读取多于一行的输入?

[英]How to read more than one line of input?

所以我构建了一个小型的基本数据加密器(仅用于学习目的)。 它工作得很好,但它只读取一行输入。 是我的编辑器问题还是我的代码有问题。

ps:我使用CodeBlocks

#include <iostream>
#include <ctype.h>

using namespace std;

int main()
{
    std::string str;
    char enc;
    int word;
    cout << "\t\t\t\t\t\t\t\tENCRYPTOR" <<endl;
    cout << "\t\t\t\t\t\t\t\t---------" <<endl;
    cout << "Enter a Word: ";
    getline(cin, str);
    int n = 0;
    cout << "\n\n\t\t\t\t\t\t\t\tENCRYPTED D@T@" <<endl;
    cout << "\t\t\t\t\t\t\t\t--------------\n\n" << endl;
    for(int i = 0; i < str.length(); i++){
        int randomAdd[5] = {5,6,2,3,2};
        int size = sizeof(randomAdd)/sizeof(randomAdd[0]);
//        for(int j = 0; j < 5; j++){
        word = str.at(i);
        if(i%5 == 0){
            n = 0;
        }
        enc = int(word) + randomAdd[n];
        std::cout << char(enc);
        n++;
    }

 return 0;
}

这有效

Hello World

但我不能进入这个

Hello World
Have a nice day

因为然后程序退出命令提示符而没有任何错误或消息。

如何阅读不止一行?

此代码示例允许您从命令行/shell 交互输入多行

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

using namespace std;

int main()
{
    string str;
    char enc;
    int word;
    vector<string> myInput;
    cout << "\t\t\t\t\t\t\t\tENCRYPTOR" <<endl;
    cout << "\t\t\t\t\t\t\t\t---------" <<endl;
    while (str != "Enigma")
    {
        cout << "Enter a line (Write Enigma to exit input): ";
        getline(cin, str);
        myInput.push_back(str);
    }
    int n = 0;
    cout << "\n\n\t\t\t\t\t\t\t\tENCRYPTED D@T@" <<endl;
    cout << "\t\t\t\t\t\t\t\t--------------\n\n" << endl;
    for(auto & myInputLine : myInput)
    {
        str = myInputLine;
        for (size_t i = 0; i < str.length(); i++) {
            int randomAdd[5] = { 5,6,2,3,2 };
            int size = sizeof(randomAdd) / sizeof(randomAdd[0]);
            word = str.at(i);
            if (i % 5 == 0) {
                n = 0;
            }
            enc = int(word) + randomAdd[n];
            std::cout << char(enc);
            n++;
        }
    }
    return 0;
}

如果Enigma被写入,则输入完成。

所有输入都存储在 STL 的vector容器中,请参阅vector

之后,所有行都由您的算法加密。

希望能帮助到你?

你可以这样做

#include <iostream>

using namespace std;

int main() {

  string str;
  
  while (getline(cin, str)) {
    cout << str << endl;
  }

  return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM