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

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

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

Студворк — интернет-сервис помощи студентам
Добрый день! Мне нужно считать значения двумерного массива. В txt файле хранятся, например, такие значения.
1 2 3
4 5 6
7 8 9
С чтением всех чисел подряд понятно, с помощью .eof вывожу до конца файла все данные, но мне нужно различать конец строки. Как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.10.2013, 15:35
Ответы с готовыми решениями:

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

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

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

17
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 15:44
Проверять на '\n'
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:44  [ТС]
Кстати, размер матрицы заранее не известен. В идеале мне бы использовать какой-нибудь признак конца строки, как .eof для конца файла.
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
04.10.2013, 15:45
А зачем? Считывайте подряд и записывайте в массив.
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
04.10.2013, 15:46  [ТС]
Цитата Сообщение от 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
Так можно

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
Цитата Сообщение от 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  [ТС]
Цитата Сообщение от Stanis Посмотреть сообщение
А как потом числа доставать из символьного массива ? Ведь думаю с матрицей хотят еще что то сделать кроме вывода на экран.
Именно, потом предстоит много работы с массивом. Но для начала надо записать каждый элемент массива из файла в двумерный массив в программе.
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:15
Цитата Сообщение от 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
Цитата Сообщение от 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
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:29
Цитата Сообщение от Stanis Посмотреть сообщение
if(b=='\n')
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
0
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
04.10.2013, 16:36
Я себе так представляю :
1) Считаешь в файле кол-во строк и столбцов.
2)Создаешь int матрицу соотв-го размера
3)В переменную char считываешь символ.
3.1)Если это '\n' , то сам знаешь что делать.
3.2)Если это пробел (скажем цифры в матр разделены пробелами) , то берем след символ
3.3)Если не '\n' и не пробел , то преобразуем и пихаем в матр. int matr[x][x]=(int)символ;
Получаем матрицу

Добавлено через 2 минуты
Цитата Сообщение от Bend3r Посмотреть сообщение
Ошибка, т.к в Си нельзя сравнивать строки, буквы.
Ну во первых это не я написал , а во вторых это же не строка а символ.
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.10.2013, 16:39
Цитата Сообщение от Stanis Посмотреть сообщение
это же не строка а символ.
а вы попробуйте.
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
04.10.2013, 16:45
Цитата Сообщение от Bend3r Посмотреть сообщение
а вы попробуйте.
Символ можно.
C
1
2
ch == "s"; // бестолку.
ch == 's'; // нормально.
2
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
04.10.2013, 16:53
Вот так можно
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
 Аватар для HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 17:42
или из строки забираем числа функцией
strtol
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.10.2013, 19:07
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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 19:38
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2013, 19:38
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru