Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56

Чтение строк из файла

23.05.2017, 18:49. Показов 2638. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Такой вопрос. У меня есть windows forms на С++ как из файла читать пробелы и переход на новую строку используя функцию Split()?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2017, 18:49
Ответы с готовыми решениями:

Чтение разных строк из файла в textBox
Здравствуйте. У меня есть текстовый файл. Мне нужно чтобы при нажатии на button в textBox выводилась строка из файла. При еще одном нажатии...

Чтение строк из файла
Добрый день имеется ряд вопросов касательно чтения строк из текстового файла. В папке с программой содержится файл TEST.TXT, в котором...

Чтение строк из файла
Спасибо всем за ответы на меё сообщение о чтении строк из файла... Все работает. Вот только еще не большой вопрос скажем кинул я эти 6...

10
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
23.05.2017, 19:21
C++
1
2
3
            String^ text = IO::File::ReadAllText("c:\\text.txt");
 
            array<String^, 1>^ parts = text->Split(gcnew array<Char,1>{' ','\r','\n'},System::StringSplitOptions::RemoveEmptyEntries);
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
23.05.2017, 21:01  [ТС]
Sklifosofsky, Спасибо. У меня еще такой вопрос у меня есть LI.cpp где прописана функция. Я создаю текстовый документ где ввожу точки (x;y). Я в MyForm.h добавил checkbox и прописал если на него нажать то из текстового файла в chart рисуется график. Можете пожалуйста сказать где у меня ошибка? (m-это массив. m[i][0] - массив х-ов. m[i][1]-массив у-ов. checkbox2 - это выбор если вводить точки из datagridview, который я переименовал в input)
LI.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "LI.h"
#include <cmath>
 
double LI(double** m, double xx, int rows_countt)
{
    double LI = 0;
    for (int i = 0; i < rows_countt; i++)
    {
        LI += (m[i][2] * (m[i][1] - xx)) / (m[i][1] - xx);
    }
 
    return LI;
}
MyForm.h
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    chart1->Series["Spline"]->Points->Clear();
    chart1->Series["Line"]->Points->Clear();
    int rowss = input->RowCount;
 
    double **m = new double *[rowss - 1];
 
    for (int i = 0; i < rowss - 1; i++)
    {
        m[i] = new double[2];
    }
 
    for (int i = 0; i < rowss - 1; i++)
    {
        m[i][0] = Convert::ToDouble(input->Rows[i]->Cells["X"]->Value->ToString());
        m[i][1] = Convert::ToDouble(input->Rows[i]->Cells["Y"]->Value->ToString());
 
        if (checkBox2->Checked)
        {
            chart1->Series["Spline"]->Points->Clear();
            chart1->Series["Line"]->Points->AddXY(m[i][0], m[i][1]);
        }
    }
 
    double z, xx;
 
    for (int i = 0; i < rowss - 1; i++)
    {
        if (checkBox2->Checked)
        {
            xx = m[i][2];
            z = LI(m, xx, rowss - 1);
            chart1->Series["Line"]->Points->AddXY(xx, z);
 
            std::ofstream fr("linsplin.txt", std::ios_base::out);
            if (fr.is_open())
            {
                fr << "Работа программы лин сплайна:" << std::endl;
                fr << "результ. по точкам " << z << "\n" << "время " << clock() / 1000.0 << std::endl;
                for (int i = 1; i < rowss - 1; i++)
                {
                    fr << "F(x)=";
                    fr << std::endl;
                }
                fr << std::endl;
                fr << "------------------\n\r" << std::endl;
            }
            else
                fr << errno;
            fr.close();
        }
 
        else if (checkBox1->Checked)
        {
            String^ str = "input.txt";
            /*String^ inpt = File::ReadAllText(str);
            array<Char>^chars = { ' ', '\n' };
            array<String^>^ split = inpt->Split(chars);*/
 
            array<String^, 1>^ parts = str->Split(gcnew array<Char, 1>{' ', '\r', '\n'}, System::StringSplitOptions::RemoveEmptyEntries);
 
            for (int i = 0; i < rowss - 1; i++)
            {
                m[i] = new double[2];
            }
 
            for (int i = 0; i < rowss - 1; i++)
            {
                m[i][0] = Convert::ToDouble(parts);
                m[i][1] = Convert::ToDouble(parts);
            }
 
            xx = m[i][2];
            z = LI(m, xx, rowss - 1);
            chart1->Series["Line"]->Points->AddXY(xx, z);
 
            //inpt->Split({ ' ','\n' });
            /*double wx, wy;
            row = 0;
            mmm = new double *[row];
 
            for (int i = 0; i < row; i++)
            {
                mmm[i] = new double[2];
            }
 
            for (int i = 0; i < row; i++)
            {
                mmm[i][0] = Convert::ToDouble(split);
                mmm[i][1] = Convert::ToDouble(split);
 
            }
            row++;*/
        }
 
    }
}
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
23.05.2017, 21:41
Lado, в какой строке ошибку выдает?
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
23.05.2017, 22:13  [ТС]
Sklifosofsky, ошибку нигде не выдает. Просто chart не рисует график при нажатии на кнопку
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
23.05.2017, 22:56
Lado, попробуйте поэтапно точки остановки поставить, проверте какие данные передаются, очень помогает
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
23.05.2017, 23:02  [ТС]
Sklifosofsky, я бы через отладчик сделал бы но программа не доходит до моего условия(if(checkBox1->Checked)), она игнорирует это условие
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
23.05.2017, 23:57
Должно, ничего не мешает.

строка 20 строка не нужна, т.к. выполняется строке 2 (еще в цикле)
строка 31 - xx получает 0, т.к. в m[i][2] не заносили значений, так должно быть?

Это все что касается при условии checkBox2->Checked

Добавлено через 11 минут
У вас метод срабатывает при нажатии кнопки? Может вы событие забыли подписать?
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
24.05.2017, 00:57  [ТС]
Sklifosofsky, если не использовать последнее условие, то работает все прекрасно. Я думал переделать немного и переделал вот таким образом
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
43
private: System::Void checkBox1_Click(System::Object^  sender, System::EventArgs^  e) {
        chart1->Series["Spline"]->Points->Clear();
        int rowsst = 0;
 
        double **mert = new double*[rowsst];
 
        String^ str = "input.txt";
        String^ inpt = File::ReadAllText(str);
        array<Char>^ chars = { ' ', '\n' };
        array<String^>^split = inpt->Split(chars);
        //array<String^, 1>^ parts = str->Split(gcnew array<Char, 1>{' ', '\r', '\n'}, System::StringSplitOptions::RemoveEmptyEntries);
 
        for (int i = 0; i < rowsst; i++)
        {
            mert[i] = new double[2];
        }
 
        for (int i = 0; i < rowsst; i++)
        {
            mert[i][0] = Convert::ToDouble(split->ToString());
            mert[i][1] = Convert::ToDouble(split->ToString());
 
            if (checkBox1->Checked)
            {
                //chart1->Series["Spline"]->Points->Clear();
                chart1->Series["Line"]->Points->AddXY(mert[i][0], mert[i][1]);
            }
        }
 
        double zzz, xxxxx;
 
        for (int i = 0; i < rowsst; i++)
        {
            if (checkBox1->Checked)
            {
                xxxxx = mert[i][2];
                zzz = LI(mert, xxxxx, rowsst);
                chart1->Series["Line"]->Points->AddXY(xxxxx, zzz);
            }
 
        }
        rowsst++;
}
но оно все равно не работает. Единственное что оно делает так это вот это
C++
1
chart1->Series["Spline"]->Points->Clear();
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
24.05.2017, 20:00
Строка 3 - rowsst равен 0. Поэтому цикл на 13, 18, 32 не будет работать. Я так понял ему нужно присвоить количество пар значений (если Х и У на одной строки, построчно)
C++
1
rowsst = split->Length/2;
Строка 20, 21 split - это массив строк поэтому надо писать вместо split->ToString() - split[i]

C++
1
2
            mert[i][0] = Convert::ToDouble(split[i]);
            mert[i][1] = Convert::ToDouble(split[i+1]);
Улаживаете логику программы
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
25.05.2017, 00:21  [ТС]
Sklifosofsky, аааааа я понял. Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2017, 00:21
Помогаю со студенческими работами здесь

Чтение строк из файла
Мне нужно читать строки из фалйа разной длинны тоесть может быть вобще пустая строка. нужно именно c++ не c

Чтение строк из файла
Здраствуйте программисты. Требуется написать программу, считывающую строки из заданного файла и выводящую их на экран под номерами. ...

Чтение строк из файла
Добрый день! Подскажите как сделать вот это: сделать обработку, которая считывает входной файл. Читает каждую строку файла и раскладывает...

Чтение строк из файла
struct Questions { char quest; }QuestList; void main() { int numQuest=0; FILE *fp; fp = fopen(&quot;voprosy.txt&quot;,...

Чтение строк из файла
Есть файл с 10 строками, необходимо вывести на экран четные строки ifstream file(&quot;C:\\1.txt&quot;); for (int i = 0; i &lt; 5; i++) { ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru