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

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

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

Конец строки в txt файле - C++

04.10.2013, 15:35. Просмотров 1558. Ответов 17
Метки нет (Все метки)

Добрый день! Мне нужно считать значения двумерного массива. В txt файле хранятся, например, такие значения.
1 2 3
4 5 6
7 8 9
С чтением всех чисел подряд понятно, с помощью .eof вывожу до конца файла все данные, но мне нужно различать конец строки. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 15:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конец строки в txt файле (C++):

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt - C++
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется текстовый файл 2.txt c таким...

Запись в конец строки в файле - C++
Ув. форумчане! Подскажите, как дописать в конец строки в файле определенные данные? Например у меня есть файл с уже забитыми данными: ...

Добавить воскл знак в конец каждой строки в файле. - C++
С++ но с использованием функций С. Вообщем есть такое задание. Делал давно. Вот что получилось: #include <iostream> #include...

Поиск, сортировка и удаление строки в txt файле - C++
Помогите новичку с C++. Есть файл с данными вида: ФИО Дата рождения Образование и тд... Нужно организовать поиск, чтобы в...

Менять рандомно местами ВСЕ строки в txt файле - C++
Привет. Как менять строки местами в txt файле ? Нужна функция которая принимает путь к файлу и меняет местами все строки из файла...

Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt - C++
Здравствуйте, нужно записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt помогите, пожалуйста

17
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:44 #2
Проверять на '\n'
0
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:44  [ТС] #3
Кстати, размер матрицы заранее не известен. В идеале мне бы использовать какой-нибудь признак конца строки, как .eof для конца файла.
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
04.10.2013, 15:45 #4
А зачем? Считывайте подряд и записывайте в массив.
0
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:46  [ТС] #5
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Проверять на '\n'
int main()
{
setlocale(LC_CTYPE,"Russian");
ifstream F;
F.open("C:\\Users\\Иван\\Desktop\\ООП_ЛАБ2\\матрица.txt");
int a;
char b;
while(!F.eof())
{
F>>a;
//b=?
if(b=='\n') cout<<endl;
cout<<a;
}
}

Что то такое? Только что присвоить b?
0
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:52 #6
Так можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
setlocale(LC_CTYPE,"Russian");
ifstream F;
F.open("C:\\Users\\Иван\\Desktop\\ООП_ЛАБ2\\матрица.txt");
char a[20];
while(!F.eof())
{
F.getline(a,20);
cout<<a<<endl;
}
}
0
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 15:57 #7
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Так можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
setlocale(LC_CTYPE,"Russian");
ifstream F;
F.open("C:\\Users\\Иван\\Desktop\\ООП_ЛАБ2\\матрица.txt");
char a[20];
while(!F.eof())
{
F.getline(a,20);
cout<<a<<endl;
}
}
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
0
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 16:03  [ТС] #8
Цитата Сообщение от Stanis Посмотреть сообщение
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
Именно, потом предстоит много работы с массивом. Но для начала надо записать каждый элемент массива из файла в двумерный массив в программе.
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:15 #9
Цитата Сообщение от ivan92 Посмотреть сообщение
Именно, потом предстоит много работы с массивом. Но для начала надо записать каждый элемент массива из файла в двумерный массив в программе.
Ну и в чем проблема? Создайте в мейне, массив целочисленных чисел. И записывайте, ну и можете проверять перед каждой записью.
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int massiv[50][50]; //в него и записывайте
int i = 0;
int j = 0;
int z;
while(!f.eof())
{
f >> z;
if(strcmp(z,'\n') == 0) cout << "Конец строки."; //если не работает поменяйте знак == на !=
massiv[i][j] = z;
++j;
if (j == 2) 
{
    ++i;
    j = 0; 
}
}
0
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 16:17 #10
Цитата Сообщение от ivan92 Посмотреть сообщение
int main()
{
setlocale(LC_CTYPE,"Russian");
ifstream F;
F.open("C:\\Users\\Иван\\Desktop\\ООП_ЛАБ2\\матрица.txt");
int a;
char b;
while(!F.eof())
{
F>>a;
//b=?
if(b=='\n') cout<<endl;
cout<<a;
}
}

Что то такое? Только что присвоить b?
Здесь может сделать не int a , а char a . В a считывать и сравнивать на '\n' . Создать int массив и затем запихивать
эти a в массив с преобразованием int b=(int)a; . Только нужно задавать размерность матрицы самому , либо считать количество в .txt файле. Дальше с массивом делать что нужно.
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:29 #11
Цитата Сообщение от Stanis Посмотреть сообщение
if(b=='\n')
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
0
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 16:36 #12
Я себе так представляю :
1) Считаешь в файле кол-во строк и столбцов.
2)Создаешь int матрицу соотв-го размера
3)В переменную char считываешь символ.
3.1)Если это '\n' , то сам знаешь что делать.
3.2)Если это пробел (скажем цифры в матр разделены пробелами) , то берем след символ
3.3)Если не '\n' и не пробел , то преобразуем и пихаем в матр. int matr[x][x]=(int)символ;
Получаем матрицу

Добавлено через 2 минуты
Цитата Сообщение от Bend3r Посмотреть сообщение
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
Ну во первых это не я написал , а во вторых это же не строка а символ.
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:39 #13
Цитата Сообщение от Stanis Посмотреть сообщение
это же не строка а символ.
а вы попробуйте.
0
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 1
04.10.2013, 16:45 #14
Цитата Сообщение от Bend3r Посмотреть сообщение
а вы попробуйте.
Символ можно.
C
1
2
ch == "s"; // бестолку.
ch == 's'; // нормально.
2
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 16:53 #15
Вот так можно
C++
1
2
3
4
5
6
7
8
while(!F.eof())
{
    F.getline(a,20);
    //...
    //берем числа из строки a, записываем в массив
    //...
    cout<<a<<endl;
}
Брать можно с помощью istringstream, для этого нужно подключить #include <sstream>.
istringstream работает аналогично fstream, только читает не из файла, а из строки
C++
1
2
3
istringstream iss(a);
iss>>i;    //читаем первое число в i
iss>>j;    //читаем второе число в j
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 16:53
Привет! Вот еще темы с ответами:

Посчитать сколько в файле input.txt символов и записать их количество в output.txt - C++
Поступил на информатику, задали рассказать что и как делает программа, я напишу как считаю правильно, а вы пожалуйста поправьте если где ...

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию - C++
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Массив строк. Конец строки и конец массива - C++
\n - перевод на новую строку \0 - конец строки Если у меня массив строк (текст), чем заканчивается каждая строка, и как закончится...

Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой строки - C++
помогите как можно быстрей Дан текстовый файл F.txt. Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой...


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

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

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