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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.91
александрз
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 35
#1

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

24.04.2012, 19:22. Просмотров 8609. Ответов 13
Метки нет (Все метки)

Появилась проблема.
Строка из файла считывается, но не реагирует на пробелы.
И не находит конец строки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include<iostream>
using namespace std;
int main(){
char s[1000];
ifstream fin ("part2num.txt");
fin>>s[0];
int j = 1;
while (s[j]!='\0'){
 
fin>>s[j];
cout<<s[j];
j++;
}
system("pause");
}
Кто нибудь может помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 19:22     Считывание строки из файла.
Посмотрите здесь:

Считывание строки из файла - C++
Доброго времени суток! В программе необходима реализация ввода строки из файла и дальнейшая работа с ней. Используются GTESTS. Также...

Считывание строки из файла - C++
Здравствуйте. Есть такой класс (это упрощенный тестовый класс): class test_string { std::string s; public: test_string(const...

Считывание строки из файла - C++
Здравствуйте Проблема такая: во время считывания строки из файла выносит из проги ifstream fin(&quot;in.txt&quot;); string word(&quot;&quot;); while...

Считывание строки из файла - C++
Пишу что-то типа простой авторизации на c++, нужно взять из файла определенную строку ( там пароли хранятся ) и сравнить с введенной. Как...

Считывание строки с файла - C++
Подскажите как сделать так чтобы с файла считывало не одну строку а все! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Считывание строки из файла - C++
Что то не врублю, как считать полностью всё содержимое файла и занести его в строку. НАпример если там будет такое: ф ыы ввв а...

считывание строки из файла - C++
Помогите,пожалуйста,с программой. Необходимо считать из файла строку,удалить из неё предложение в скобках(включая скобки) и записать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
24.04.2012, 19:33     Считывание строки из файла. #2
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>
using namespace std;
 
int main()
{
    string str;
 
    ifstream fin("part2num.txt");
    while(!fin.eof()) str += fin.get();
    fin.close();
 
    cout << str << endl << endl;
 
    system("pause");
    return 0;
}
александрз
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 35
24.04.2012, 20:43  [ТС]     Считывание строки из файла. #3
Он строкой считывает всю что в файле, а как это разделить на массив строк?
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
24.04.2012, 22:52     Считывание строки из файла. #4
Цитата Сообщение от александрз Посмотреть сообщение
Он строкой считывает всю что в файле, а как это разделить на массив строк?
Можно так (примерно, не компилировал):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <string>
 
 
using namespace std;
 
 
int main() {
    vector<string> text(
       (istream_iterator<string>(ifstream("part2num.txt"))),
        istream_iterator<string>()
    );
    copy(text.begin(), text.end(), ostream_iterator(cout, " "));
}
Получится вектор из строк. С ним можно работать так же, как с массивом.
new27
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 7
14.11.2012, 17:02     Считывание строки из файла. #5
А можно как-то преобразовать полученную строку в массив символов?

Добавлено через 6 минут
Ой, так все же просто оказалось: обращаемся поэлементно к символам как к элементам массива (str[i])
у меня получилось.
Если вам надо разбить на строки, то знайте, что "\0" это символ перехода на новую строку

Добавлено через 12 минут
Нет, у меня не получилось, потому что непонятно какой предел в цикле устанавливать. При вызове функции strlen выводится ошибка
error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Что делать?
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
14.11.2012, 17:42     Считывание строки из файла. #6
Цитата Сообщение от new27 Посмотреть сообщение
знайте, что "\0" это символ перехода на новую строку
Нет, это не он.
Цитата Сообщение от new27 Посмотреть сообщение
При вызове функции strlen выводится ошибка
error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
Вместо
C++
1
strlen(arg)   // для char const*
пиши
C++
1
arg.length()   // для std::string
Добавлено через 7 минут
Цитата Сообщение от new27 Посмотреть сообщение
А можно как-то преобразовать полученную строку в массив символов?
Примерно так:
C++
1
2
3
4
char * buffer = new char[str.length()];
std::memcpy(buffer, str.c_str(), str.length());
// ...
delete[] buffer;
new27
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 7
14.11.2012, 18:51     Считывание строки из файла. #7
gray_fox, Честно говоря, я классы еще не знаю и вообще не очень хорошо пишу. Мне надо было написать программу которая копирует содержимое файла, удаляя в каждой строке слово под номером n. Используя пример из этой темы я кое-что состряпала. И оно даже немного работало пока в консоле не начала появляться ошибка "string subscript out of range"
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;
int i,j,n,m;
i=0;
ifstream fin("text.txt");
while(!fin.eof())
str+= fin.get();

fin.close();

cout << str << endl << endl;

cout << "введите n" << endl;
cin >> n;
i=str.length();
m=1;
for (j=0; j<i;j++){
if (m!=n)
cout << str[j];
if (str[i]==' ') m++; // т. е. я ищу это слово под номером n по количеству пройденных пробелов и вывожу на экран только все остальные слова. в этом заключается удаление
if (str[i]=='/0') m=1;

}

system("pause");
return 0;
}
zhurbikk
4 / 4 / 0
Регистрация: 14.11.2012
Сообщений: 38
14.11.2012, 18:55     Считывание строки из файла. #8
по моему проще будет использовать getline
while (!fin.eof())
{
fin.getline(s,1000,'\n');
}
и оно построчно с пробелами считает файл
а там если нужно сохранить эти строки можно сделать массив строк и точно также считать
new27
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 7
14.11.2012, 19:11     Считывание строки из файла. #9
zhurbikk, error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize,_Elem)' : cannot convert parameter 1 from 'std::string' to 'char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
zhurbikk
4 / 4 / 0
Регистрация: 14.11.2012
Сообщений: 38
14.11.2012, 20:04     Считывание строки из файла. #10
Скинь код и скажи что нужно

Добавлено через 16 минут
Скинь код и скажи что делать
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
14.11.2012, 20:09     Считывание строки из файла. #11
Цитата Сообщение от zhurbikk Посмотреть сообщение
fin.getline(s,1000,'\n');
C++
1
getline(fin, s);
new27
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 7
14.11.2012, 20:13     Считывание строки из файла. #12
zhurbikk, в сообщении номер 7 написала вроде как
zhurbikk
4 / 4 / 0
Регистрация: 14.11.2012
Сообщений: 38
14.11.2012, 20:45     Считывание строки из файла. #13
как то так
у меня работает


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
string str;
int i,j,n,m;
i=0;
ifstream fin("text.txt");
if (!fin)
{
            cout<<"Error";
            return -1;
}
cout << "введите n" << endl;
cin >> n;
while(!fin.eof())
{
 
getline(fin,str);
 
 
 
//cout << str << endl << endl;
 
 
i=str.length();
m=1;
for (j=0; j<i;j++){
if (m!=n)
cout << str[j];
if (str[j]==' ') m++; // т. е. я ищу это слово под номером n по количеству пройденных пробелов и вывожу на экран только все остальные слова. в этом заключается удаление
if (str[j]=='/0') m=1;
 
}
cout<<endl;
}
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 21:11     Считывание строки из файла.
Еще ссылки по теме:

Считывание из файла по номеру строки - C++
Есть задача получить Event по номеру, из txt файла, то есть выводится такое сообщение: void UpdateFile() { std::cout &lt;&lt; &quot;Вывод всех...

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

Считывание строки с текстового файла - C++
Напишите пожалуйстанаброски как можно считать строку с текстового файла ,для дальнейшей работы с ней.Используя string.h Спасибо

Считывание строки из бинарного файла в string - C++
Привет всем!! Помогите новичку понять почему происходит ошибка при считывании строки из файла. void LoadFile() { string j; ...

Считывание всей строки из файла в структуру - C++
Привет. Есть программа, считывающая из файла некоторые данные про рабочих и вывод их на экран с использованием структуры. Проблема...


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

Или воспользуйтесь поиском по форуму:
new27
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 7
14.11.2012, 21:11     Считывание строки из файла. #14
zhurbikk, У меня тоже работает. Спасибо большое!
Yandex
Объявления
14.11.2012, 21:11     Считывание строки из файла.
Ответ Создать тему
Опции темы

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