Хотя тема вопроса не совсем точна, вот в чем проблема. У меня есть файл, в который человек пишет свой текст, например «Сегодня очень хороший день», и я сохраняю его в текстовом документе. Затем моя задача - взять все эти символы и переместить их на одну букву дальше (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;
}

Но программа читает только первое слово. Как мне изменить программу, чтобы читать весь текст со всеми пробелами?

0
Adversas 27 Ноя 2016 в 21:52

2 ответа

Лучший ответ

Используйте std::getline, например:

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

Кстати, using namespace std; - плохая практика, вы должны содержать свое глобальное пространство имен в чистоте и использовать префикс std::. Если вы очень ленивы, вы можете «импортировать» только важные части. using std::cin; и т. Д.

1
Kamil Koczurek 27 Ноя 2016 в 19:02

Укажите на конец файла.

 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
Patrice Chaula 27 Ноя 2016 в 19:05