Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не копируется string в string, кажется аномальным, почему так? 
:(
    Опции темы
champion
Дата 12.11.2010, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 26.1.2005

Репутация: нет
Всего: 2



Пишу программу, которая берет дирректорию, и в ней читает все файлы, из файлов выдергивает все слова в массив.
Не получается при реассоциации массива перенести слова, не срабатывает присвоение на строке 43. Скажите, в чем беда?
Код

#include<stdio.h>
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<fstream>
#include<sstream>
#include<dirent.h>

using namespace std;

void listFile();

int main(){
    listFile();
    return 0;
}

void listFile(){
    string   str;
    string readfrom = "C:\\test\\";
    DIR *pDIR;
    struct dirent *entry;
    if( pDIR=opendir(readfrom.c_str()) ){
        while(entry = readdir(pDIR)){
            if( strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 ){
                string file;
                file.append(readfrom);
                file.append(entry->d_name);
                ifstream inn(file.c_str());
                string* words;
                words = new string[1];
                int wordspos = 0;
                while (inn.good()) {
                    string line;
                    getline(inn, line);
                    bool no = false;
                    for ( int i=0; i<line.length(); i++ ) {
                        if ( line.at(i) == '<' ) no = true;
                        if ( !no ) {
                            if ( line.at(i) == ' ' ) {
                                string* newwords = new string[wordspos+2];
                                for ( int j=0;j<wordspos;j++) {
                                          newwords[j] = words[j];
                                }
                                delete[] words;
                                words = newwords;
                                wordspos++;
                            }
                            words[wordspos] += line.at(i);
                        }
                        if ( line.at(i) == '>' ) no = false;
                    }
                }
                inn.close();
            }
        }
        closedir(pDIR);
    
    }
}

P>S> Код кривой однако smile Давно не писал.

Это сообщение отредактировал(а) champion - 12.11.2010, 00:07


--------------------
user posted image
PM MAIL   Вверх
DarthGuyver
Дата 12.11.2010, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.11.2009

Репутация: нет
Всего: нет



А если на 42 строке написать так?

for ( int j=0;j<=wordspos;j++)

PM MAIL   Вверх
bsa
Дата 12.11.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



champion, если бы ты использовал std::vector или другой стандартный контейнер, то у тебя таких проблем бы не было. да и работало бы быстрей.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.