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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертирование String в char, HELP!!!! 
V
    Опции темы
jhonyxakep
Дата 7.4.2009, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

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



Код



flist >> i;    
 getline(flist,file);    
 while (s != i){    
 s++;        
 getline(flist,file);    
 } 

PM MAIL ICQ   Вверх
Anikmar
Дата 7.4.2009, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Код

flist >> i;    
Тут вы считывате кол-во файлов (строк). Если файл пустой - нет никакой защиты, но это ладно

 getline(flist,file);    
Дальше вы считываете строку. А если i==0 (нет строк в файле)?


 while (s != i){    
 s++;        
 getline(flist,file);    
 } 
Дальше в цикле вы считываете оставшиеся строки, причем в одну и ту же переменную.



Более правильно:
Код

list >> i;
for(s=0;s<i;s++)
{
   getline(flist,file);    
   MyFuncPreobr(file.c_str());         // Выносим преобразование файла в отдельную функцию
}

Я тоже для простоты никакой защиты от пустого файла или от неправильного формата не стал делать.

Дальше приступаем к собственно функции преобразования.
PM MAIL ICQ   Вверх
jhonyxakep
Дата 7.4.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

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



Код



flist >> i;    - чтение    кол-ва файлов
 getline(flist,file);     -для переноса на другую строку
 while (s != i){      
 s++;         
 getline(flist,file);     
 } 

С циклами for я почему-то не дружу...
А за исправления ГИГАНТСКОЕ СПАСИБО!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 7.4.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Я тоже для простоты никакой защиты от пустого файла или от неправильного формата не стал делать.

накатал, прям тут:
Код

    ifstream ifstr("D:\\1.txt");
    
    if (!ifstr)
    {
        cout<<"Error: cannot open..."<<endl;
        system("pause");
        return 0;
    }



--------------------

PM MAIL   Вверх
jhonyxakep
Дата 7.4.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

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



Дело в том что файл пустым, и несущесвующим быть не может. Если файла нет значит виновата оболочка...
PM MAIL ICQ   Вверх
Anikmar
Дата 7.4.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(jhonyxakep @  7.4.2009,  08:46 Найти цитируемый пост)
для переноса на другую строку

А, понял. тогда я не прав.

Цитата(jhonyxakep @  7.4.2009,  08:52 Найти цитируемый пост)
Дело в том что файл пустым, и несущесвующим быть не может. Если файла нет значит виновата оболочка... 

Ну вам виднее.

Теперь пишите функцию перевода файла в нужный вид - там неясно какое у него должно быть имя и т.п.
PM MAIL ICQ   Вверх
Dmi3ev
Дата 7.4.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



вот так читать все пути из файла в вектор (чтобы у тебя был весь список)
Код

int main()
{
    char *fn="D:\\1.txt";//путь к файлу
    ifstream ifstr(fn);//будем читать
    int n;//количество строк, которые надо читать
    string s;//сюда будем читать строку из файла
    vector<string> vs1;//здесь будем хранить n строк из файла
    
    if (!ifstr)
    {
        cout<<"Error: cannot open "<<fn<<endl;
        system("pause");
        return 0;
    }
    

    ifstr>>n;

    cout<<"I am reading from file: "<<end;
    for (int i=0; i<n; i++)
    {
        ifstr>>s;
        cout<<s<<endl;
        vs1.push_back(s);
    }

    cout<<"Now in my vector: "<<endl;
    for (int i=0; i<vs1.size(); i++)
    {
        cout<<vs1[i]<<endl;
    }

    system ("pause");
    return 0;
}


Добавлено @ 09:05
Или я чего-то не догоняю???

Это сообщение отредактировал(а) Dmi3ev - 7.4.2009, 09:07


--------------------

PM MAIL   Вверх
Anikmar
Дата 7.4.2009, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Dmi3ev @  7.4.2009,  09:03 Найти цитируемый пост)
Или я чего-то не догоняю??? 

Да нет, все правильно. Правда если человек не дружит с for, то vector его может испугать  smile

Добавлено через 51 секунду
Цитата(jhonyxakep @  7.4.2009,  08:46 Найти цитируемый пост)
С циклами for я почему-то не дружу...

Кстати напрасно - в данном случае он предпочтительнее.
PM MAIL ICQ   Вверх
zim22
Дата 7.4.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Прога считывает имена файлов с файла file_list.txt
и рядом с этими файлами создаёт их hex копии

единственная ошибка smile в моей проге - во время выхода пишет:
Run-Time Check Failure #2 - Stack around the variable 'buffer' was corrupted

формат файла:
Код
D:\1.txt
D:\calc2.exe


Код
#include <vector>
#include <fstream>
#include <string>
#include <ios>

int main()
{
  std::ifstream in("file_list.txt");
  std::string line;
  std::vector<std::string> file_name_vector;
  while (getline(in, line)) {
    file_name_vector.push_back(line);
  }
  std::ifstream cur_file;
  std::ofstream output_file;

  char buffer[100];
  char hex_array[3];

  for (std::vector<std::string>::iterator it = file_name_vector.begin();
                                          it != file_name_vector.end();
                                          ++it) {
    cur_file.open((*it).c_str());
    output_file.open((*it + "_hex").c_str(), std::ios::binary);

    const int kBufferSize = 100;
    while (cur_file.read(buffer, kBufferSize)) {
      
      for (int i = 0; i < kBufferSize; ++i) {
        itoa(buffer[i], hex_array, 16);
        output_file << hex_array;
      }
    }
    if (cur_file.gcount()) {
      for (int i = 0; i < cur_file.gcount(); ++i) {
        itoa(buffer[i], hex_array, 16);
        output_file << hex_array;
      }
    }
    output_file.clear();
    output_file.close();

    cur_file.clear();
    cur_file.close();
  }
  return 0;
}



Это сообщение отредактировал(а) zim22 - 7.4.2009, 09:25

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  file_list.txt 0,02 Kb


--------------------
PM MAIL   Вверх
jhonyxakep
Дата 7.4.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

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



А что такое Vector? разъясните, может пригодится.

Добавлено через 10 минут и 3 секунды
zim22 - круто! далеко мне до такого!
PM MAIL ICQ   Вверх
Anikmar
Дата 7.4.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(zim22 @  7.4.2009,  09:10 Найти цитируемый пост)
char hex_array[2];

Надо 3 по-моему. Куда нулю. деваться?
PM MAIL ICQ   Вверх
Dmi3ev
Дата 7.4.2009, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

А что такое Vector? разъясните, может пригодится.

jhonyxakep, читай сам... в инете полно информации... а то ты без труда хочешь получить все и сразу...


--------------------

PM MAIL   Вверх
zim22
Дата 7.4.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(Anikmar @  7.4.2009,  09:22 Найти цитируемый пост)
Надо 3 по-моему. Куда нулю. деваться?

исправил

Добавлено @ 09:26
Цитата(jhonyxakep @  7.4.2009,  09:10 Найти цитируемый пост)
zim22 - круто! далеко мне до такого!

так лучше не программируйте. это страшный, почти индусский код smile

jhonyxakep, если ответ на тему получен - пометь её решенной

Это сообщение отредактировал(а) zim22 - 7.4.2009, 09:27


--------------------
PM MAIL   Вверх
Anikmar
Дата 7.4.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(zim22 @  7.4.2009,  09:25 Найти цитируемый пост)
исправил

Исчезла ошибка?


Цитата(zim22 @  7.4.2009,  09:25 Найти цитируемый пост)
так лучше не программируйте. это страшный, почти индусский код  

Думаете в Индии нет хороших программистов?  smile 
PM MAIL ICQ   Вверх
jhonyxakep
Дата 7.4.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

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



Dmi3ev логично, только я в нете и это искал...
А после того как поискал, в гугле стал ставить "без слов: Visual C# Builder"
PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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