Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

17.05.2009, 15:09. Просмотров 926. Ответов 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;
}
файл создаётся, но не записывает символы в конец строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2009, 15:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Файловый ввод вывод. небольшая загвоздка (C++):

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод) - C++
Как сделать чтобы список студентов выводился на экран в конце? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

10
RazorQ
581 / 348 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
17.05.2009, 15:13 #2
попробуй записать '\n' или '\r'
0
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 15:22  [ТС] #3
куда записать?
0
RazorQ
581 / 348 / 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;
}
1
edif
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 11
17.05.2009, 15:56  [ТС] #5
не чего от этого не меняется, программа просто переписывает строку в новый файл, а кол-во символов в конец строки не записывает
0
Evg
Эксперт CАвтор FAQ
18895 / 6852 / 498
Регистрация: 30.03.2009
Сообщений: 19,281
Записей в блоге: 30
17.05.2009, 16:01 #6
Строки 13-17 какой-то мудрёж - всю строку забиваете ерундой.
Вместо этого надо от строки отрезать последний символ перевода строки и сделать что-то типа s += s.length()
0
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;
}
символы в строке не считает, а мне нужно чтобы он записывал кол-во символов в данном файле и записывал их в конец исходной строки!
0
Evg
Эксперт CАвтор FAQ
18895 / 6852 / 498
Регистрация: 30.03.2009
Сообщений: 19,281
Записей в блоге: 30
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;
0
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;
}
а так выводит только кол-во символов без самой строки
0
Evg
Эксперт CАвтор FAQ
18895 / 6852 / 498
Регистрация: 30.03.2009
Сообщений: 19,281
Записей в блоге: 30
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
1
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
18.05.2009, 05:18 #11
это просто читает строки, пока в них есть символы (пустые не читает) и выводит в формате "строка размер"
0
Вложения
Тип файла: zip str_to_strandlen.zip (760 байт, 14 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2009, 05:18
Привет! Вот еще темы с ответами:

Файловый ввод и вывод - C++
Посмотрел примеры сложения двух чисел на С++. Никак не пойму: где нужно создавать этот текстовый файл? Создал в папке, где проект, так...

Файловый ввод\вывод - C++
В программе я записывают информацию структуры в файл,а потом хочу вывести с записанного файла на экран. Но вот проблемка,смог реализовать...

Файловый ввод и вывод на С++ - C++
Написать программу, создающую файл 1.txt и записывающую в него информацию, вводимую с клавиатуры пользователем. Затем проверить какие...

Файловый ввод-вывод - C++
Дан текстовый файл с некоторыми целыми числами. Открыть файл, определить максимальное значение элементов. Если оно кратно трем, заменить...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru