0

コンパイル時に次のエラーが発生します...

エラー: 'text' はこのスコープで宣言されていません

エラー: 'strlen' はこのスコープで宣言されていません

それらを宣言してこのエラーを修正するにはどうすればよいですか...?

私のコードは Caesar Cipher のルールに従っています...

このコードを改善して効率を上げるにはどうすればよいですか???

プログラムはシーザー暗号を含むファイルを入力し、別のテキストで解読コードを出力します...

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
#include <math.h>
#include <stdio.h>
#include <string>
#include <string.h>
using namespace std;

int main()

{

    // Declarations

    string reply;

    string inputFileName;

    ifstream inputFile;

    char character;



    cout << "Input file name: ";

    getline(cin, inputFileName);



    // Open the input file.

    inputFile.open(inputFileName.c_str());     
    // Check the file opened successfully.

    if ( ! inputFile.is_open()) {

        cout << "Unable to open input file." << endl;

        cout << "Press enter to continue...";

        getline(cin, reply);

        return 1;


    }

    // This section reads and echo's the file one character (byte) at a time.

    while (inputFile.peek() != EOF) {

        inputFile.get(character);

        //cout << character;
    //Don't display the file...

    char cipher[sizeof(character)];


    //Caesar Cipher code...
    int shift;
    do {
        cout << "enter a value between 1-26 to encrypt the text: ";
        cin >> shift;
       } 
    while ((shift <1) || (shift >26));

    int size = strlen(character);
    int i=0;

    for(i=0; i<size; i++)
    {
        cipher[i] = character[i];
        if (islower(cipher[i])) {
            cipher[i] = (cipher[i]-'a'+shift)%26+'a';
        }
        else if (isupper(cipher[i])) {
            cipher[i] = (cipher[i]-'A'+shift)%26+'A';
        }
    }

    cipher[size] = '\0';
    cout << cipher << endl;


    }

    cout << "\nEnd of file reached\n" << endl;

    // Close the input file stream

    inputFile.close();

    cout << "Press enter to continue...";

    getline(cin, reply);

    return 0;   

}

4

1 に答える 1

1

変数textが宣言されていません。char*より便利std::stringに or を使用し、そのメンバー関数c_str()を使用して に渡すことができますstrlensize()(文字列のメンバー関数を使用できるという事実は別として)

Strlenはの一部です<cstring>

#include <cstring>
于 2013-08-01T09:26:10.087 に答える