С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 10
1

Работа со строками в файле

01.03.2015, 21:20. Показов 6263. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Помогите пожалуйста, задача такая: В файле есть список фамилий и имен разделенных пробелом, на выходе должны остаться только фамилии. Как это сделать?
Было:
Иванов Артем
Александров Кирилл
Никитин Данил
Стало:
Иванов
Александров
Никитин
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2015, 21:20
Ответы с готовыми решениями:

Работа с временем и строками в файле
Приветствую, гуру. Появился вопросик по поводу парсинга времени: Суть вопроса такова. Есть...

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Работа со строками С++
Задача вот с таким условием: В строке все вхождения подстроки str1 заменить подстрокой str2. Str2...

Работа с строками
С клавиатуры вводится строка. Разработать программу, которая реализует указанные действия. а)...

6
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
01.03.2015, 21:47 2
Лучший ответ Сообщение было отмечено Lektron как решение

Решение

Если в каждой строке всегда только два слова.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 const char *fname="file.txt",
                *out="file_out.txt";
    char S[255];
 
    ifstream f1(fname);
        ofstream f2(out);
        while (!f1.eof()){
            f1>>S;
            f2<<S<<"\n";
            f1>>S;
        }
 
        f2.close();
    f1.close();
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 10
01.03.2015, 21:49  [ТС] 3
Спасибо, можете поподробней объяснить что вы делаете?) не могу разобраться в вашем коде.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
01.03.2015, 21:58 4
C++
1
2
3
4
5
6
7
    ifstream f1(fname); //Открыл файл для чтения. f1 - это указатель на файл для чтения
        ofstream f2(out);//Открыл файл для записи. f2 - это указатель на файл для записи
        while (!f1.eof()){ //читаю f1 пока не достигну конца файла
            f1>>S;  //помещаю прочитанное в массив символов S
            f2<<S<<"\n"; //Записываю S в выходной файл
            f1>>S;  //читаю f1 (имитирую continue)
        }
Т.к. << читает не всю строку, а до пробела, то читать будет каждое слово по очереди. Одно слово прочитали, записали в файл. Второе слово прочитали, но ничего не сделали. Пошла новая итерация цикла. Третье слово прочитали, записали в файл., четвертое слово просто прочитали. Пошла новая итерация....
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 10
01.03.2015, 22:02  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
    ifstream Fin;
    ofstream Fout;
    int n; 
    string s;
 
    Fin.open("input.txt");
    getline(Fin, s);
    n = s.rfind(' ');
    s = s.substr(n);
    Fin.close();
 
}
Пытался сделать как-то так , но не выходит

Добавлено через 1 минуту
Понял ваше объяснение, но можно ли как-то моим методом сделать?) Чтобы отрезать до пробела и записать в эту строку) И так со всеми строками?
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
01.03.2015, 22:13 6

Не по теме:

можно, но надо сразу выкладывать свое. Ведь отношение к тем, что свое нерабочее показывает всегда у всех потенциальных помощников лояльнее.



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
26
27
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
    ifstream Fin;
    ofstream Fout;
 
    int n;
    string s;
 
    Fin.open("file.txt");
    Fout.open("out.txt");
    while (!Fin.eof()){
    getline(Fin, s);
        n = s.rfind(' ');
        s = s.substr(n);
 
        Fout.write(s.c_str(), sizeof(char)*s.size() );
        Fout.write("\n",sizeof(char));
    }
Fout.close();
Fin.close();
 
}
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.03.2015, 22:14 7
Цитата Сообщение от Lektron Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
    ifstream Fin;
    ofstream Fout;
    int n; 
    string s;
 
    Fin.open("input.txt");
    getline(Fin, s);
    n = s.rfind(' ');
    s = s.substr(n);
    Fin.close();
 
}
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
26
27
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
    ifstream Fin;
    ofstream Fout;
    int n; 
    string s;
 
    Fin.open("input.txt");
    if (!Fin.is_open())
    { cerr << "File not found!" << endl; return -1;}
    while (Fin.good())
    {
        getline(Fin, s);
        n = s.rfind(' ');
        s = s.substr(n);
        Fout << s << endl;
    }
    Fin.close();
    Fout.close();
    
    return 0;
}
0
01.03.2015, 22:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2015, 22:14
Помогаю со студенческими работами здесь

Работа со строками
Даны два слова. Для каждой буквы первого слова определить, входит ли она во второе слово....

Работа со строками
Всем привет. Есть такой код void makeStr() { std::string testStr = &quot;Take...

Работа со строками
Прошу помочь написать код для двух программ: 1) Написать программу подсчета числа слов в строке *)...

Работа со строками
#include &lt;iostream&gt; #include &quot;locale.h&quot; using namespace std; char...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru