Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
#1

Файловый ввод вывод. небольшая загвоздка - C++

17.05.2009, 15:09. Просмотров 848. Ответов 10
Метки нет (Все метки)

имеем текстовый файл.нужно переписать в новый файл все его строки, вставив в конец каждой строки количество символов в ней.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "fstream"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
    ifstream in("f.txt");
    ofstream out ("g.txt");
    string s;
    while (in.peek()!=EOF)//пока не прочитан маркер конца файла
    {getline(in,s); //читаем строку из файла f.txt
    for (unsigned int i=0; i<s.length(); i++)
    {char a=s[i];
    s[i]=s[s.length()];
    s[s.length()]=a;
    }
    out<<s<<endl; //записывем изменённую строку в файл g.txt
    }
    in.close();
    out.close();
cin.get();
cin.get();
return 0;
}
файл создаётся, но не записывает символы в конец строки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2009, 15:09     Файловый ввод вывод. небольшая загвоздка
Посмотрите здесь:

C++ Файловый ввод-вывод.
Файловый ввод/вывод в С++ C++
Файловый ввод-вывод C++
Файловый ввод/вывод C++
Файловый ввод\вывод C++
Файловый ввод-вывод C++
Файловый ввод\вывод C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
17.05.2009, 15:13     Файловый ввод вывод. небольшая загвоздка #2
попробуй записать '\n' или '\r'
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 15:22  [ТС]     Файловый ввод вывод. небольшая загвоздка #3
куда записать?
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
17.05.2009, 15:45     Файловый ввод вывод. небольшая загвоздка #4
Цитата Сообщение от edif Посмотреть сообщение
куда записать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "fstream"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
        ifstream in("f.txt");
        ofstream out ("g.txt");
        string s;
        while (in.peek()!=EOF)
        {getline(in,s); 
        for (unsigned int i=0; i<s.length(); i++)
        {char a=s[i];
        s[i]=s[s.length()];
        s[s.length()]=a;
        }
        out<<s<<'\n'; //здесь
        }
        in.close();
        out.close();
cin.get();
cin.get();
return 0;
}
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 15:56  [ТС]     Файловый ввод вывод. небольшая загвоздка #5
не чего от этого не меняется, программа просто переписывает строку в новый файл, а кол-во символов в конец строки не записывает
Evg
Эксперт CАвтор FAQ
17289 / 5537 / 345
Регистрация: 30.03.2009
Сообщений: 15,075
Записей в блоге: 26
17.05.2009, 16:01     Файловый ввод вывод. небольшая загвоздка #6
Строки 13-17 какой-то мудрёж - всю строку забиваете ерундой.
Вместо этого надо от строки отрезать последний символ перевода строки и сделать что-то типа s += s.length()
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 16:18  [ТС]     Файловый ввод вывод. небольшая загвоздка #7
Evg, попробовала так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "fstream"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
    ifstream in("f.txt");
    ofstream out ("g.txt");
    string s;
    while (in.peek()!=EOF)//пока не прочитан маркер конца файла
    {getline(in,s); //читаем строку из файла f.txt
    s+=s.length();
    out<<s<<'\n';//записывем изменённую строку в файл g.txt
    }
    in.close();
    out.close();
cin.get();
cin.get();
return 0;
}
символы в строке не считает, а мне нужно чтобы он записывал кол-во символов в данном файле и записывал их в конец исходной строки!
Evg
Эксперт CАвтор FAQ
17289 / 5537 / 345
Регистрация: 30.03.2009
Сообщений: 15,075
Записей в блоге: 26
17.05.2009, 16:45     Файловый ввод вывод. небольшая загвоздка #8
Значит вместо "s+=s.length();" надо что-то другое, что прилепит с конца текст с длиной строки. Я в этих Си++ классах плохо понимаю. Почитай документаци. по string'у на предмет того, как приклеить к коцу целое число. Либо как целое сконвертить в string - что-то из разряда "s+=FUNC(s.length())", где FUNC - это имя функции преобразования из целого в string (поищи, как оно правильно называется)

Добавлено через 5 минут 29 секунд
Либо вариант через ж$пу (с точки зрения концепции Си++)

В начале файла вставляешь "#include <stdio.h>"
Затем "s+=s.length();" заменяешь на

C++
1
2
3
char buff[32];
sprintf (buff, "%d", s.length());
s+=buff;
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 16:46  [ТС]     Файловый ввод вывод. небольшая загвоздка #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "fstream"
#include "iostream"
#include "string"
using namespace std;
 
int main()
{
ifstream in("f.txt");
ofstream out ("g.txt");
string s;
while (in.peek()!=EOF)//пока не прочитан маркер конца файла
{getline(in,s); //читаем строку из файла f.txt
s+=s.length();
out<<s.length()<<'\n';//записывем изменённую строку в файл g.txt
}
in.close();
out.close();
cin.get();
cin.get();
return 0;
}
а так выводит только кол-во символов без самой строки
Evg
Эксперт CАвтор FAQ
17289 / 5537 / 345
Регистрация: 30.03.2009
Сообщений: 15,075
Записей в блоге: 26
17.05.2009, 16:49     Файловый ввод вывод. небольшая загвоздка #10
В конце вместо "[cpp ]" надо писать "[/cpp ]" (со слэшом)

А по поводу того, что ты написал - действительно. Можно не заморациваться и сделать всё просто. Вместо

C++
1
2
s+=s.length();
out<<s.length()<<'\n';//записывем изменённую строку в файл g.txt
пишем

C++
1
out<<s<<s.length()<<endl;//записывем строку и её длину в файл g.txt
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2009, 05:18     Файловый ввод вывод. небольшая загвоздка
Еще ссылки по теме:

C++ Файловый ввод/вывод
Файловый ввод-вывод C++
C++ Файловый ввод и вывод
C++ файловый ввод-вывод
C++ Файловый ввод-вывод?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.05.2009, 05:18     Файловый ввод вывод. небольшая загвоздка #11
это просто читает строки, пока в них есть символы (пустые не читает) и выводит в формате "строка размер"
Вложения
Тип файла: zip str_to_strandlen.zip (760 байт, 14 просмотров)
Yandex
Объявления
18.05.2009, 05:18     Файловый ввод вывод. небольшая загвоздка
Ответ Создать тему
Опции темы

Текущее время: 15:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru