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

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

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

C++ Добавить воскл знак в конец каждой строки в файле.
C++ В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
C++ Поиск, сортировка и удаление строки в txt файле
Посчитать сколько в файле input.txt символов и записать их кол-во в output.txt C++
C++ Запись в конец строки в файле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:44     Конец строки в txt файле #2
Проверять на '\n'
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:44  [ТС]     Конец строки в txt файле #3
Кстати, размер матрицы заранее не известен. В идеале мне бы использовать какой-нибудь признак конца строки, как .eof для конца файла.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
04.10.2013, 15:45     Конец строки в txt файле #4
А зачем? Считывайте подряд и записывайте в массив.
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:46  [ТС]     Конец строки в txt файле #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?
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:52     Конец строки в txt файле #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;
}
}
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 15:57     Конец строки в txt файле #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;
}
}
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 16:03  [ТС]     Конец строки в txt файле #8
Цитата Сообщение от Stanis Посмотреть сообщение
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
Именно, потом предстоит много работы с массивом. Но для начала надо записать каждый элемент массива из файла в двумерный массив в программе.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
04.10.2013, 16:15     Конец строки в txt файле #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; 
}
}
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 16:17     Конец строки в txt файле #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 файле. Дальше с массивом делать что нужно.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
04.10.2013, 16:29     Конец строки в txt файле #11
Цитата Сообщение от Stanis Посмотреть сообщение
if(b=='\n')
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 16:36     Конец строки в txt файле #12
Я себе так представляю :
1) Считаешь в файле кол-во строк и столбцов.
2)Создаешь int матрицу соотв-го размера
3)В переменную char считываешь символ.
3.1)Если это '\n' , то сам знаешь что делать.
3.2)Если это пробел (скажем цифры в матр разделены пробелами) , то берем след символ
3.3)Если не '\n' и не пробел , то преобразуем и пихаем в матр. int matr[x][x]=(int)символ;
Получаем матрицу

Добавлено через 2 минуты
Цитата Сообщение от Bend3r Посмотреть сообщение
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
Ну во первых это не я написал , а во вторых это же не строка а символ.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
04.10.2013, 16:39     Конец строки в txt файле #13
Цитата Сообщение от Stanis Посмотреть сообщение
это же не строка а символ.
а вы попробуйте.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
04.10.2013, 16:45     Конец строки в txt файле #14
Цитата Сообщение от Bend3r Посмотреть сообщение
а вы попробуйте.
Символ можно.
C
1
2
ch == "s"; // бестолку.
ch == 's'; // нормально.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 16:53     Конец строки в txt файле #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
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
04.10.2013, 17:42     Конец строки в txt файле #16
или из строки забираем числа функцией
strtol
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.10.2013, 19:07     Конец строки в txt файле #17
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main () {
    ifstream input("input.txt");
    vector<vector<int>> matrix;
    while (!input.eof()){
        vector<int> buf;
        string st;
        int n;
        std::getline (input, st);
        std::stringstream line(st);
        while(!line.eof()){
            line>>n;
            buf.push_back(n);
        }
        matrix.push_back(buf);
    }
    input.close();
    for (vector<vector<int>>::iterator i=matrix.begin(); i!=matrix.end(); i++){
        for(vector<int>::iterator j=i->begin(); j!=i->end(); j++)
            cout<<(*j)<<" ";
        cout<<endl;
    }
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 19:38     Конец строки в txt файле
Еще ссылки по теме:

C++ Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
Массив строк. Конец строки и конец массива C++
C++ Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 19:38     Конец строки в txt файле #18
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 <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
int main () 
{
    ifstream input("input.txt");
    
    vector <vector <int>> matrix;
    vector <int> temp;
    int n;
    while (input >> n)
    {   temp.push_back(n);
        if (input.peek() == '\n' || input.peek() == EOF) 
        {
            matrix.push_back(temp);
            temp.clear();
        }
    }
    
    input.close();
    
    return 0;
}
Yandex
Объявления
04.10.2013, 19:38     Конец строки в txt файле
Ответ Создать тему
Опции темы

Текущее время: 21:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru