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

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

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

Author24 — интернет-сервис помощи студентам
Добрый день! Мне нужно считать значения двумерного массива. В txt файле хранятся, например, такие значения.
1 2 3
4 5 6
7 8 9
С чтением всех чисел подряд понятно, с помощью .eof вывожу до конца файла все данные, но мне нужно различать конец строки. Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2013, 15:35
Ответы с готовыми решениями:

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

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

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

Дозапись слова в конец любой строки в текстовом файле
Здравствуйте, по заданию мне нужно в текстовом файле из парных строк находить слова наибольшей...

17
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:44 2
Проверять на '\n'
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:44  [ТС] 3
Кстати, размер матрицы заранее не известен. В идеале мне бы использовать какой-нибудь признак конца строки, как .eof для конца файла.
0
190 / 160 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
04.10.2013, 15:45 4
А зачем? Считывайте подряд и записывайте в массив.
0
1 / 1 / 0
Регистрация: 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
138 / 130 / 59
Регистрация: 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
52 / 41 / 16
Регистрация: 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
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 16:03  [ТС] 8
Цитата Сообщение от Stanis Посмотреть сообщение
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
Именно, потом предстоит много работы с массивом. Но для начала надо записать каждый элемент массива из файла в двумерный массив в программе.
0
150 / 137 / 35
Регистрация: 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
52 / 41 / 16
Регистрация: 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
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:29 11
Цитата Сообщение от Stanis Посмотреть сообщение
if(b=='\n')
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
0
52 / 41 / 16
Регистрация: 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
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:39 13
Цитата Сообщение от Stanis Посмотреть сообщение
это же не строка а символ.
а вы попробуйте.
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
04.10.2013, 16:45 14
Цитата Сообщение от Bend3r Посмотреть сообщение
а вы попробуйте.
Символ можно.
C
1
2
ch == "s"; // бестолку.
ch == 's'; // нормально.
2
138 / 130 / 59
Регистрация: 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
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 17:42 16
или из строки забираем числа функцией
strtol
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
04.10.2013, 19:07 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;
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 19:38 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;
}
0
04.10.2013, 19:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2013, 19:38
Помогаю со студенческими работами здесь

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

Переписать файл 'F.txt' в файл 'G.txt', вставляя в конец каждой строки ее порядковый номер
Не успеваю, очень срочно на завтра надо 4. Дан текстовый файл 'F.txt'. Переписать файл 'F.txt' в...

Переписать в новый файл output1.txt все его строки, вставив в конец каждой строки ее номер и количество символов в ней
Дан тектсовый файл input.txt. Необходимо:  переписать в новый файл output1.txt все его строки,...

Перенос первой строки из txt в конец файла
Здравствуйте, подскажите пожалуйста, как первую строку в txt файле перенести в конец этого файла? ...


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

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