Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
 Аватар для maks_IQ
21 / 21 / 1
Регистрация: 05.01.2011
Сообщений: 173

Чтение txt-файла с помощью StreamReader-а

07.02.2011, 17:47. Показов 10014. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток.
вопрос такой: как считать информацию из *.txt файла с помощью streamreader?

файл был создан таким образом:
C++
1
2
3
auto f = System::IO::File::CreateText("tmp.txt");
f->WriteLine(textBox1->Text);
f->Close();
зы: полистал справку - ничего не понял. Объясните пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2011, 17:47
Ответы с готовыми решениями:

StreamReader не читает русские буквы из файла .txt
Пишу метод, который читает значения из файла txt по значению. Особо в нете не прошарен, если есть способы проще и я пишу велосипед, то...

Чтение через StreamReader HTML файла
Через StreamReader я читаю HTML файл В Debug все работает как надо, но при запуске через .EXE идет какая-то фильтрация и читается...

Чтение из файла 'New.txt', запись четных строк в '1.txt', а нечетных в '2.txt'
В общем все работает, но есть "НО", иначе бы не открывал тему. Содержимое исходного файла: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2...

6
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
07.02.2011, 18:38
C++
1
2
3
4
5
6
7
StreamReader^ sr = gcnew StreamReader("TestFile.txt");
String^ line;
while ((line = sr->ReadLine()) != nullptr)
{
    // делаем что-то со строкой
}
sr->Close();
Добавлено через 35 минут
Точнее говоря, System::IO::File::CreateText возвращает StreamWriter ^ , который является write-only потоком, поэтому в StreamReader преобразовать не получится, просто создаете объект класса StreamReader и инициализируете вызовом OpenText, когда StreamWriter уже закрыт

C++
1
2
3
4
StreamReader ^ read = System::IO::File::OpenText("tmp.txt");
        
String ^ str = gcnew String(read->ReadLine());
read->Close();
0
 Аватар для maks_IQ
21 / 21 / 1
Регистрация: 05.01.2011
Сообщений: 173
07.02.2011, 22:14  [ТС]
Ma3a, ясно. а можно как-нибудь записать содержимое файла в char []?
если да, то как?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
07.02.2011, 22:38
Перевести можно, но делать это приходится не напрямую. Например так
C++
1
2
3
4
5
StreamReader ^ read = System::IO::File::OpenText("tmp.txt");
 
marshal_context ^ context = gcnew marshal_context();
const char * file_contents = context->marshal_as<const char *>(read->ReadToEnd());
delete context;
Маршалинг типов в принципе и был задуман как средство преобразования между native и managed типами, так что наверное лучше поступать так.
0
 Аватар для maks_IQ
21 / 21 / 1
Регистрация: 05.01.2011
Сообщений: 173
07.02.2011, 23:03  [ТС]
Ma3a,
я чето совсем запутался.
Вот смотрите задачу:
1.в файл "1.txt" пишется строка из textBox1->Text.
2.строка читается из файла в программу. (в 1 и 2 я сделал именно так, ибо не знал как из string^ сделать char[])
3.в программе каждый символ этой строки кодируется опеределенным словом и записывается в "2.txt" (например слово "мама" будет выводиться в файл как "%D0%BC%D0%B0%D0%BC%D0%B0")
4.далее, из файла "2.txt" строка читается в textBox2->Text.

вот как-то так.самое сложное тут - это реализовать перекодирование символов. в консольном приложении я это кое-как написал, вот примерный код:
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
 FILE *fp=new FILE; fp=fopen("test.txt","a"); int var=0; FILE *fp1=new FILE; fp1=fopen("tmp.txt","r"); int val=0; 
    char abc1[83]={'а','б','в','г','д','е','ё',
    'ж','з','и','й','к', 
    'л','м','н','о','п','р',
    'с','т','у','ф','х','ц',
    'ч','ш','щ','ъ','ы', 
    'ь','э','ю','я',' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','.',',', '@', '!', '%', ' $','&', '*', '(', ')', '_', '=','+','1','2','3','4','5','6','7','8','9','0'};
    char* abc2[83]={"%D0%B0","%D0%B1","%D0%B2","%D0%B3","%D0%B4","%D0%B5","%D0%91","%D0%B6","%D0%B7","%D0%B8","%D0%B9","%D0%BA","%D0%BB","%D0%BC","%D0%Bd","%D0%BE","%D0%BF","%d1%80","%d1%81","%d1%82","%d1%83","%d1%84","%d1%85","%d1%86","%d1%87","%d1%88","%d1%89","%d1%8A","%d1%8B","%d1%8C","%d1%8d","%d1%8E","%d1%8F","+","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".","%2C","%40","%21","%25","%24","%26","%2A","%28","%29","_","%3D","%2B","1","2","3","4","5","6","7","8","9","0"};
    
    char str[256];
    fgets(str,256,fp1);
    val=strlen(str);
    for(int i=0;i<val;i++) 
    {
        for(int j=0; j<86; j++)
        {
            if(str[i]==abc1[j])
            {
                fputs(abc2[j],fp);
            }
            
        }
    }
    fclose(fp);
а вот как это в форму запихнуть, я уже битый час ломаю голову. Если это возможно, подскажите, как написать код?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
07.02.2011, 23:57
А зачем вам тогда из String ^ опять в native тип переводить, чтобы надо было опять в String ^ перегонять дабы заполнить TextBox1->Text ?

просто делаете свои дела с перекодированием, на этом этапе у вас будет заполнен массив str или что там используется для вывода в файл, в общем выводите это в 2.txt, слизываете это StreamReader'ом так же как и на шаге 2, и заполняете textbox

C++
1
2
3
StreamReader ^ read = System::IO::File::OpenText("2.txt");
String ^ encoded = read->ReadToEnd();
TextBox2->Text = encoded;
0
 Аватар для maks_IQ
21 / 21 / 1
Регистрация: 05.01.2011
Сообщений: 173
08.02.2011, 12:35  [ТС]
че-то я ступил.
убрал операции с файлами и вот что получилось:
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
private: System::Void textBox1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
             if(e->KeyCode==Keys::Enter){
              e->SuppressKeyPress = true;
              webBrowser1->Show();button1->Show();button2->Show();
              
 
 
 
              String ^ str=textBox1->Text;
 
 
int var=0; int val=0; 
    char abc1[83]={'а','б','в','г','д','е','ё',
    'ж','з','и','й','к', 
    'л','м','н','о','п','р',
    'с','т','у','ф','х','ц',
    'ч','ш','щ','ъ','ы', 
    'ь','э','ю','я',' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','.',',', '@', '!', '%','$','&', '*', '(', ')', '_', '=','+','1','2','3','4','5','6','7','8','9','0'};
    "???????" abc2[83]={"%D0%B0","%D0%B1","%D0%B2","%D0%B3","%D0%B4","%D0%B5","%D0%91","%D0%B6","%D0%B7","%D0%B8","%D0%B9","%D0%BA","%D0%BB","%D0%BC","%D0%Bd","%D0%BE","%D0%BF","%d1%80","%d1%81","%d1%82","%d1%83","%d1%84","%d1%85","%d1%86","%d1%87","%d1%88","%d1%89","%d1%8A","%d1%8B","%d1%8C","%d1%8d","%d1%8E","%d1%8F","+","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".","%2C","%40","%21","%25","%24","%26","%2A","%28","%29","_","%3D","%2B","1","2","3","4","5","6","7","8","9","0"};
    
    
 
 int len=0;
 
 
 
    while (str[len]!='\n')
    {
        len++;
    }       
                                                    
 
    for(int i=0;i<len;i++) 
    {
        for(int j=0; j<86; j++)
        {
            if(str[i]==abc1[j])
            {
                textBox6->AppendText(abc2[j]); 
            }
            
        }
    }
     
                 String ^link1="wordstat.yandex.ru/?cmd=words&page=1&text="; String ^link2="&geo=&text_geo="; String ^s=textBox6->Text;
                 this->textBox5->Text=link1; this->textBox5->AppendText(s); this->textBox5->AppendText(link2);
                 
                 
                 this->webBrowser1->Show();
                 this->webBrowser1->Navigate(this->textBox5->Text);
              this->browserToolStripMenuItem->Enabled=true;
              this->webBrowser1->Navigate(this->textBox1->Text);
                  this->button1->Enabled=true;
                  this->button4->Enabled=true;
                  this->button5->Enabled=true;
                  this->button6->Enabled=true;
                  this->button7->Enabled=true;
                  
             }        
         }
там где вопросы(19 строка): не знаю как сделать массив из String^ и как найти длину строки типа String^.
мсдн полистал - ничего не понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2011, 12:35
Помогаю со студенческими работами здесь

Чтение данных с одного txt файла, запись данных во второй txt в определенную позицию
Добрый день, уважаемые форумчане! Нужна ваша помощь. Задача поставлена так: существует файл film2.txt (постараюсь его прикрепить для...

Чтение из файла txt
Каким образом правильно использовать метод ReadAllText или как прочитать весь текст из файла .txt, если txt по умолчанию кодируется в...

Чтение из txt файла
Имеется txt файл. В нем написан текст, а между текстами знаки &quot;=========&quot;. То есть нужно читать текст между знаками &quot;===&quot;, а...

Чтение из txt файла
Здравствуйте. Есть программа, хочу сделать в ней чтение из txt файла через StreamReader но почему та не хочет работать. Проблема в том что...

Чтение из txt файла
Есть готовая программа, но она очень геморройная. Нужно ввести 12 оценок каждому ученику, а их там 20. Как сделать так, чтобы оценку читало...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
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