Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2014, 21:18   #1
forged
Пользователь
 
Регистрация: 25.02.2013
Сообщений: 57
По умолчанию Работа с файлами.

Не давно начал учить c++.Сейчас рушил для практики написать программу тренинг для заучивания англиских слов.
вот код:
Код:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;

int main()
{
	
	string sv[20];
	ifstream f("Урок 1.txt");
	for (int i = 0;i <= 20; ++i)
	{
		f >> sv[i];
		cout << sv[i] << endl;	
	}
	for (int i = 0;i <= 20; ++i);
	{
	}
	_getch();
}

Данные в файле:
Цитата:
the [??:]
определенный артикль
and [?nd]
и; а, но
a [?]
неопределенный артикль
to [tu:]
к, в, на, до, для
was [w?z]
был, была, было
Так вот мне нужно что бы в sv[1] равнялась первой строке, а не первому слову как это сделать?

Последний раз редактировалось Stilet; 29.05.2014 в 13:08.
forged вне форума Ответить с цитированием
Старый 28.05.2014, 19:58   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Идею хочется понять. Что Вы хотите в конечном итоге? Пользователю будут выдаваться рандомно: слово на английском, транскрипция и перевод? По нажатию на Enter?

Последний раз редактировалось 8Observer8; 28.05.2014 в 20:01.
8Observer8 вне форума Ответить с цитированием
Старый 28.05.2014, 21:55   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://rextester.com/VDZAR14799


В данном примере в поток подаются две строчки:
"first line"
"second line"

Пример иллюстрирует, как читать построчно.
А потом строчки бить на отдельные слова.

Код:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

typedef ::std::string Str;

int main()
{
    cout << "Example of how to read the file line by line.\n";
    
    
    //istream используется только для эксперимента
    istream content( cin.rdbuf() );
    
    //--- для работы с файлом, замените эту строчку на файловый стрим: 
    //--- std::ifstream content( absolute_path_to_file );
    
    if(!content)
        return cout <<"error: could not open the file\n",false;

    
    while(content) 
    {
        Str line; std::getline(content, line);
        
        if(line.empty() )
            continue;
        
        cout<<"current line: "<< line<<endl;

        stringstream ss; ss<< line; 
        while(ss) 
        {
            Str token; ss >> token;
            if(token.empty())
                continue;
               
            
            cout<<" --- token: "<< token<<endl;
        }
    }
}
_Bers вне форума Ответить с цитированием
Старый 29.05.2014, 13:00   #4
forged
Пользователь
 
Регистрация: 25.02.2013
Сообщений: 57
По умолчанию

Идет рандомный вывод англиских слов и по по нажатию например "Enter" вывод его перевода. Но я не могу считать полностью строку. А как я делаю в своем коде у меня считывает до пробела, а мне нужно чтобы читывало всю строку. Как это сделать?
forged вне форума Ответить с цитированием
Старый 29.05.2014, 13:06   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Вам же показали выше, как считывать струку, а потом и каждое слово.

Строка считывается в С++ с помощью функции std::getline() http://www.cplusplus.com/reference/s...tring/getline/

P.S. Интересно, у Вас русские символы нормально считываются?
8Observer8 вне форума Ответить с цитированием
Старый 29.05.2014, 16:19   #6
forged
Пользователь
 
Регистрация: 25.02.2013
Сообщений: 57
По умолчанию

Ааа. Вроде понял как. Русские символы считываются нормально. Надо только написать setlocale(LC_ALL,"Russian");
forged вне форума Ответить с цитированием
Старый 29.05.2014, 17:06   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если Вы на Visual С++ IDE, то всё нормольно будет с русским.

А вот с символами транскрипции, я и сам не знаю, как Вам быть. На первых парах - сделайте без них.

Только код сюда выкладывайте. Интересно, что Вы там напишите
8Observer8 вне форума Ответить с цитированием
Старый 29.05.2014, 18:37   #8
forged
Пользователь
 
Регистрация: 25.02.2013
Сообщений: 57
По умолчанию

Я пишу на Dev C++. У меня VS не работает. Читал что это из-за того что vs уже был установлен, а у меня был vs c# экспрес вроде его удалил все равно не работает. Может подскажите?
forged вне форума Ответить с цитированием
Старый 29.05.2014, 18:38   #9
forged
Пользователь
 
Регистрация: 25.02.2013
Сообщений: 57
По умолчанию

А код выложу.
forged вне форума Ответить с цитированием
Старый 29.05.2014, 19:23   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Лично я с VS не подскажу. А вот по поводу setlocale(LC_ALL,"Russian"); и среды Dev C++ - я слышал, должны быть проблемы. Вроде setlocale() катит только для VS. Могу ошибаться. Если бы у Вас была установленна английская версия Windows, то скорее всего были бы проблемы.

P.S. Советую поставить Qt. Там можно будет GUI приложение сделать в формошлёпке. Ещё там есть split(), базы данных, регулярные выражения, поддержка юникода и т.д. Вашу задачу будет проще решить. Вот короткая инструкция по началу работы: http://notes.orgfree.com/pure_cpp_in_qt.php
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами С# Mr Anonim Помощь студентам 0 15.03.2012 21:41
Работа с файлами Painkiller_13 Общие вопросы Delphi 5 17.07.2011 00:41
Работа с файлами. Си jimmywoodes Помощь студентам 3 28.01.2010 09:27