2016-11-27 27 views
0

質問のトピックはあまり正確ではありませんが、ここに問題があります。私は、ある人がテキストを書くファイルを持っています。たとえば、「今日はとても素敵な一日です。次に私の仕事は、これらのキャラクターをすべて取って、さらに1文字移動させることです(aはb、zはaとなります)。しかし、私は彼らの場所のスペースを保つ必要があります。アレイにスペースを追加する方法

#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <cmath> 

using namespace std; 

int main(){ 

string a; 
string Code; 
string New; 

ifstream File ("Txt.txt"); 
File>>Code; 

for (int i = 0; i<Code.size(); i++){ 
    if (Code.at(i) >= 'A' && Code.at(i) <= 'V' || Code.at(i) >= 'a' && Code.at(i) <= 'v') { 
      a = Code.at(i) + 4; 
      New += a; 
      } 
    else if (Code.at(i) == 'W'){ 
      a = 'A'; 
      New += a;} 
    else if (Code.at(i) == 'X'){ 
      a = 'B'; 
      New += a;} 
    else if (Code.at(i) == 'Y'){ 
      a = 'C'; 
      New += a;} 
    else if (Code.at(i) == 'Z'){ 
      a = 'D'; 
      New += a;} 
    else if (Code.at(i) == 'w'){ 
      a = 'a'; 
      New += a;} 
    else if (Code.at(i) == 'x'){ 
      a = 'b'; 
      New += a;} 
    else if (Code.at(i) == 'y'){ 
      a = 'c'; 
      New += a;} 
    else if (Code.at(i) == 'z'){ 
      a = 'd'; 
      New += a;} 
    else if (Code.at(i) == ' '){ 
      a = Code.at(i); 
      New += a; 
      } 
     }cout<<New; 

return 0; 
} 

ただし、プログラムは最初の単語のみを読み取ります。どのようにすべてのスペースですべてのテキストを読むためにプログラムを変更する必要がありますか?

+2

は 'ステートメントをif'(26 + 1)mod 26 = 1、 'a'は最初の文字です。 – PaulMcKenzie

+0

私はこれがあなたの質問に答えると思う:http://stackoverflow.com/questions/37449872/how-to-read-in-multiple-words-from-a-text-file –

答えて

1

このような用途std::getline、:

std::string line; 
std::ifstream file("file.txt"); 
std::getline(file, line); //loads one line 

ところでusing namespace std;は、あなたがきれいにあなたのグローバル名前空間を維持し、std::接頭辞を使用する必要があり、悪い習慣です。あなたが本当に怠け者なら、重要な部分だけを「インポート」することができます。 using std::cin;など

+0

それはちょうど1行を読みます。 'std :: cout << line << std :: endl'を使用してください。また、すべての行をロードする場合は、ループを使用してください: ' –

+0

これは完全に動作します!どうもありがとうございました! – Adversas

0

ファイルの最後を指します。あなたは手紙は「Z」である場合には次の文字は、zは、26日の手紙である」ことから、たとえば、モジュロ26であることに気づいた場合は、それらのすべてを必要としない

void openFile (ifstream& f) 
    { 
    const  long LINE_LEN = 23; 
    int pos; 
     // position to 256 lines before end of file 

f.open("demodoutcarr.txt"); 
f.seekg(0, ios::end); 
pos = f.tellg(); 
pos -= LINE_LEN * NBR_RECORDS; 
f.seekg(pos); 
    } 
+0

NBR_RECORDSは宣言されていません。コードを理解するだけでなく、変更する方法もわかりません。手伝ってくれますか? – Adversas

+0

ifstream File( "Text"、ios :: in | ios :: ate)のようにファイルを開いてみてください。 //最後に –

関連する問題