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

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

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

Текст из TXT файла в строку - C++

17.10.2013, 16:45. Просмотров 361. Ответов 7
Метки нет (Все метки)

Добрый день.

С++ начал учить два дня назад, поэтому прошу не пинать за глупые вопросы.

Ситуация следующая:
есть строка S (типа char или string, пока не разобрался в чем конкретная разница)
есть файл input.txt.
В input.txt введен текст (для простоты возьмем что текст находится в одной строке).
Задача: нужно текст из файла input.txt присвоить строке S, чтобы с ним можно было полноценно работать в строке S (конкретно нужно будет).

Предполагаю, что нужно работать с функцией ifstream. Но не могу разобраться с ее работой.
Хотя с функцией ofstream разобрался.

Вопрос в следующем: как реализовать выше описанную ситуацию?
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 16:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Текст из TXT файла в строку (C++):

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt - C++
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt - C++
Даны координаты центра и радиус R окружности, координаты точки. Найти точки пересечения касательных с окружностью input.txt 1 1 1 2 2...

Отсортировать N-ую строку файла fin.txt по возрастанию длин слов в строке и записать ее в fout.txt - C++
не могу понять c++ , поможет кто разобраться? на паскале всё получается, а сейчас решил C++ изучить Вот задачка: В текстовом файле...

отладить программу на языке С++, которая считывает из файла a.txt строку и записывает её в файл b.txt в обратном порядке - C++
я это взяла из книги полностью готовый код, а он не идёт.Помогите отладить, пожалуйста #include <string.h> #include <stdlib.h> ...

Как удалить строку из структурированного .txt файла - C++
Слышал что можно пересоздать файл но без строки..но как? как указать что именно N строка мне не нужна.. пытался через массив,запихнув...

Считать текст из txt-файла и найти самое длинное слово и количество слов - C++
Доброго времени суток ! надо считать текст с файла тхт и найти самое длинное слово и количество етих слов. как ето зделать ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
17.10.2013, 16:58 #2
homme, ну было же на форуме(

Считывание строки из файла.

вот например. Попробуйте разобраться. Вопрос то очень распространенный, уже много раз решался
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
17.10.2013, 17:43 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include <iostream>
#include <string>
 
int main()
{
    std::ifstream ifs("input.txt"); // создаем объект для считывания данных с файла
    if (!ifs)                       // если создать не удалось
    {
        std::cout << "Файл не найден\n"; // выводим сообщение об ошибке
        return 1;                        // завершаем программу с кодом ошибки
    }
    std::string S;
    std::getline(ifs, S); // считываем строку из файла
    std::cout << S << std::endl; // выводим результат на экран
}
0
homme
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 4
17.10.2013, 18:31  [ТС] #4
Folko, MrGluck, спасибо!
MrGluck, прошу прощения за глупый вопрос, а зачем используется std:: ?

Была поставлена задача удалить последнюю букву каждого слова в строке. Данные в строку заносились из текстового файла.
Ниже прикладываю код программы, который у меня получился.
Программа работает, но не удаляет САМЫЙ последний символ (str[dl]), где dl - длина строки, если же этот символ является буквой. Если является точкой, запятой и т.д. - все нормально, символ стоящий перед ним удаляется (последняя буква в слове).

Собственно, теперь задача как-то удалить этот символ (в предположении что строка заканчивается им).
Пробовал сделать это следующей строкой:
C++
1
2
dl=str.length(); // узнаем новую длину строки
if (!(str[dl]==' ') || !(str[dl]=='.') ||  !(str[dl]==',') ||  !(str[dl]=='!') ||  !(str[dl]=='?') ||  !(str[dl]=='/') || !(str[dl]=='\n')) str.erase(dl-1,1);
Но программа не сделала ничего.

Как это можно сделать?
Спасибо.



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
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
 
using namespace std;
 
int main()
{
string str;
int dl,dl1,i;
ifstream vvod("input.txt");
while (!vvod.eof()) str+=vvod.get();
vvod.close();
cout << "V faile input.txt nahoditsya text: \n" << str << endl;
dl=str.length();
cout << "Dlina stroki: " << dl << endl;
for (i=0;i<dl;++i)
{
    if ((str[i]==' ') || (str[i]=='.') ||  (str[i]==',') ||  (str[i]=='!') ||  (str[i]=='?') ||  (str[i]=='/')) str.erase(i-1,1);
}
cout << "Stroka s udalennimu bukvami = " << str << endl;
dl1=str.length();
cout << "Dlina stroki s udalennimi bukvami = " << dl1 << endl;
return 0;
}
0
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
17.10.2013, 19:31 #5
homme, спасибо можно выразить кнопкой под сообщением) по поводу удаления последнего символа:

length возвращает длину строки. То есть 'slovo' будет длиной 5 символов, но последний символ будет иметь индекс не 5, а 4 (ведь начинаем нумерацию с нуля). Поэтому вам надо писать не (str[dl]==' '), а (str[dl-1]==' ')
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
17.10.2013, 19:48 #6
Цитата Сообщение от homme Посмотреть сообщение
а зачем используется std::
Я указываю пространство имен std явно вместо того, чтобы пихать в него все функции (using namespace std)

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <iostream>
#include <string>
 
int main()
{
    std::ifstream ifs("input.txt"); // создаем объект для считывания данных с файла
    if (!ifs)                       // если создать не удалось
    {
        std::cout << "Файл не найден\n"; // выводим сообщение об ошибке
        return 1;                        // завершаем программу с кодом ошибки
    }
    std::string S;
    std::getline(ifs, S); // считываем строку из файла
    std::cout << "Before: " << S << std::endl; // выводим результат на экран
    S.resize(S.length() - 1);
    std::cout << "After: " << S << std::endl; // выводим результат на экран
}
Добавлено через 16 секунд
Если надо удалить лишь определенный, то добавить условие if
1
homme
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 4
18.10.2013, 00:05  [ТС] #7
Folko, методом тыка выяснил, что нужно было работать с символом str[dl-2].
Почему dl-2 - не ясно, но факт остается фактом
Выводил элемент str[dl] - на экране пусто, str[dl-1] - на экране пусто, str[dl-2] - появилась последняя буква в строке.
Теперь вроде все работает.

Всем спасибо за помощь.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 08:17 #8
Цитата Сообщение от homme Посмотреть сообщение
Почему dl-2 - не ясно, но факт остается фактом
Нужно знать, как строка записана в файле. Может в конце строки - пробел или символ новой строки ('\n'). Поэтому
Цитата Сообщение от homme Посмотреть сообщение
str[dl-1] - на экране пусто
Пусто тоже может быть символом - пробельным.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 08:17
Привет! Вот еще темы с ответами:

Считать строку из txt-файла Unicode и преобразовать ее в число - это реально? - C++
Допустим у вас в txt-файле несколько чисел: 309 5 512 Если бы файл был в кодировке ANSI: 1) Вы считали строчку с помощью...

Из внешнего файла в формате txt ввести текст. Подсчитать частоту встречающихся в тексте символов - C++
Есть программа, но результат ее работы не вдохновляет( Либо у меня руки растут из...) #include &lt;stdlib.h&gt; #include &quot;stdafx.h&quot; ...

Текст из файла переводить в строку - C++
1. Как переводить текст из файла в строку, для работы потом, как со строкой? fstream x; x.open(&quot;x.txt&quot;); char a; //а потом...

Cчитать из файла весь текст в строку string - C++
Такой вопрос,как считать из файла ввесь текст в строку string


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2013, 08:17
Ответ Создать тему
Опции темы

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