2016-11-27 3 views
0

질문의 주제가 정확하지는 않지만 여기에 문제가 있습니다. 나는 사람이 자신의 텍스트를 쓰는 파일을 가지고있다. 예를 들어 '오늘은 아주 좋은 날'이고 txt 문서에 저장한다. 그리고 나서이 모든 charaters를 가져 와서 한 문자 더 이동하십시오 (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 

Btw는 using namespace std; 나쁜 관행, 당신은 깨끗하고 글로벌 네임 스페이스를 유지하고 std:: 접두사를 사용해야합니다. 정말로 게으른 사람이라면 중요한 부분 만 '가져올 수 있습니다'. using std::cin;

+0

그냥 한 줄을 읽었을뿐입니다. '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)과 같이 파일을 열어 봅니다. // 끝에 –

관련 문제