Форум программистов, компьютерный форум CyberForum.ru

Текст и двумерный массив. - C++

Восстановить пароль Регистрация
 
rayman
Сообщений: n/a
05.12.2010, 11:06     Текст и двумерный массив. #1
Смысл такой: есть файл c текстом. Нужно его открыть, и каждое слово в отдельности перенести в свой элемент массива. (все динамическое). Подскажите как сделать грамотнее, мой вариант не работает, ошибку отследить трудно, сам запутался уже, сижу долго над ней.
Код
        char ch;
	char **a;
	int c=0, v=0, w=0,s=0;
	
	ifstream fin("text.txt");
	
	while (fin) //определяю кол-во пробелов, значит столько будет и слов
	{
		fin.get(ch);
		cout << ch;
		if (ch==' ')
		s=s+1;
	}
	
	fin.clear(); 
	fin.seekg(0, ios::beg); //пытаюсь перевести указатель обратно в начало. 

	a = new char *[s+1]; //создаю массив указателей, равный кол-ву слов. 
	v=0;
	c=0;
        //а дальше приколюхи
	while (fin) // пока не достигнут конец  файла - мутим
	{
		w=0;
		fin.get(ch);

		while((fin)&&(ch!=' ')&&(ch!=',')&&(ch!='.')) //пока не встретится конец и заданые символы, смотрим длинну текущего слова.
		{	
			c=c+1; //где сейчас указатель
			w=w+1; //длинна слова
			fin.get(ch);
		}

		fin.clear();
	        fin.seekg(c-w, ios::beg); //тут я пытаюсь относительно начала файла сместить указатель назад на длинну текущего слова. 

		a[v] = new char [w]; //делаю массив под слово

		for (int i=0; i<w; i++) // пишу символы слова в созданный для него массив
		{	
			fin.get(ch);
			a[v][i]=ch;
			cout << "2";
		}

		v=v+1;
	}

	fin.close();
	system("pause");

	return 0;
Проходит пару слов и зацикливается на первом while, игнорируя второй while и for.
Вечно дурацкий вариант по лабам попадается =(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2010, 11:06     Текст и двумерный массив.
Посмотрите здесь:

Двумерный массив C++
C++ двумерный массив
C++ Двумерный массив
C++ на Си. двумерный массив.
двумерный массив C++
C++ Как загнать текст из консоли в массив и как загнать текст из файла в массив
C++ Считать текст из файла в двумерный массив
Записать текст из файла в двумерный массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RvP
2 / 2 / 0
Регистрация: 11.05.2010
Сообщений: 15
05.12.2010, 11:15     Текст и двумерный массив. #2
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
#include <iostream>
#include <string>
#include <vector>
 
std::vector<std::string> str_explode(std::string div,std::string str)
{
    std::vector<std::string> t;
    size_t cpt=str.find_first_of(div);
    do
    {
        t.push_back(str.substr(0, cpt)) ;
        str = str.substr(cpt+1);//длина каждого отдельного делиметера 1!!, или поставить свою
        cpt = str.find_first_of(div);
    }while (cpt!=str.npos);
    return t;
}
 
//слово-последовательность символов длинной больше 2х, ограниченая с обеих сторон пробелами
void main()
{
    FILE *f=fopen("input.txt", "rt");
    if(!f)return;
    while(!feof(f))
    {
        char buf[80];
        fgets(buf, 80, f);
        std::vector<std::string> v1=str_explode(" \n\t",buf);           //or more delimiters
        //тут делаеш что тебе надо
    }
    fclose(f);
    printf("\nNum of the not pair words - %.0f\n", cnt);
    system("pause");
}
в векторе получиш каждое слово отдельно. если надо добавь еще разделителей
Yandex
Объявления
05.12.2010, 11:15     Текст и двумерный массив.
Ответ Создать тему
Опции темы

Текущее время: 15:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru