2016-11-27 3 views
0

Bien que le sujet de la question ne soit pas assez précis, voici le problème. J'ai un fichier dans lequel une personne écrit son texte, par exemple «Aujourd'hui est une très belle journée» et je le stocke dans un document txt. Alors ma tâche est de prendre tous ces charaters et de les déplacer d'une lettre plus loin (un devient b, z devient un et ainsi de suite). Mais j'ai besoin de garder les espaces à leur place.Comment ajouter un espace dans un tableau

#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; 
} 

Mais le programme n'a lu que le premier mot. Comment devrais-je changer le programme pour lire tout le texte avec tous les espaces?

+2

Vous n'avez pas besoin de toutes ces déclarations 'if' si vous avez compris que la lettre suivante est modulo 26. Par exemple, si la lettre est « z », car « z est la lettre 26 (26 + 1) mod 26 = 1, et 'a' est le premier caractère. – PaulMcKenzie

+0

Je pense que cela répond à votre question: http://stackoverflow.com/questions/37449872/how-to-read-in-multiple-words-from-a-text-file –

Répondre

1

Utilisez std::getline, comme ceci:

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

BTW using namespace std; est une mauvaise pratique, vous devez garder votre propre global namespace et utiliser le préfixe std::. Si vous êtes vraiment paresseux, vous ne pouvez 'importer' que des parties importantes. using std::cin; etc.

+0

Il lit juste une ligne, alors vous devez utilisez 'std :: cout << ligne << std :: endl'. En outre, si vous voulez charger toutes les lignes, utilisez une boucle: ' –

+0

Cela fonctionne parfaitement! Merci beaucoup! – Adversas

0

Point à la fin de votre fichier.

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 non déclaré, et parce que je ne comprends pas le code aussi bien que vous, je ne sais pas comment le modifier. Pouvez-vous aider? – Adversas

+0

Essayez d'ouvrir votre fichier comme ceci, ifstream File ("Text", ios :: in | ios :: ate); //à la fin –