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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив не пишется в файл 
:(
    Опции темы
winsent7
Дата 29.12.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, не получается записать строковый массив в файл, вместо массива пишется число в шестнадцатеричном коде, видимо, адрес. Подскажите пож-ста. Спасибо.

Код

#include <iostream>
#include <fstream>
using namespace std;

int main()

{
    ofstream out ("test.txt");
    if (!out)
    {
        cout <<"Ne udaetsa otkrit file.\n";
        return 1;
    }

    char conf [9][80] = {
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
            };
    out<<conf;
    
    out.close();

    return 0;
}

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


трололомен
****


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

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



Код

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>


//...
std::vector<std::string>vector(10,"stroka");
std::ofstream out("test.txt");
if(out)
{
    std::copy(vector.begin(),vector.end(),std::ostream_iterator<std::string>(out,"\n"));
    out.close();
}
//...

PM MAIL   Вверх
winsent7
Дата 29.12.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



mrbrooks, спасибо, только я мало что понял - только учусь, а без vektor никак не сделать? И почему в std::vector<std::string>vector(10,"stroka");, 10, строк в массиве 9? Еще вопрос:как изменится код если строки будут разные? Еще раз спасибо.
PM MAIL   Вверх
Crafty
Дата 29.12.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(winsent7 @  29.12.2010,  16:03 Найти цитируемый пост)
а без vektor никак не сделать?

Код

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream out ("test.txt");
    if (!out)
    {
        cout <<"Ne udaetsa otkrit file.\n";
        return 1;
    }
    char conf [9][80] = {
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
             "stroka",
            };
    for(size_t i = 0; i!= 9; ++i)
      out << conf[i] << endl;    
    out.close();
    return 0;
}


Цитата(winsent7 @  29.12.2010,  16:03 Найти цитируемый пост)
И почему в std::vector<std::string>vector(10,"stroka");, 10, строк в массиве 9?

Должно быть std::vector<std::string>vector(9,"stroka");

Цитата(winsent7 @  29.12.2010,  16:03 Найти цитируемый пост)
Еще вопрос:как изменится код если строки будут разные?

Код

std::vector<std::string> str_vector;
// push_back добавляет новые слова в конец вектора.
str_vector.push_back("Hello");
str_vector.push_back("world");
...
std::ofstream out("test.txt");
if(out)
{
    std::copy(str_vector.begin(),str_vector.end(),std::ostream_iterator<std::string>(out,"\n"));
    out.close();
}


Добавлено через 1 минуту и 12 секунд
Еще #include <iterator> нужно подключить.
PM MAIL   Вверх
winsent7
Дата 29.12.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Crafty, спасибо, стало понятней, и программа работает, но есть несколько вопросов:
1. что такое size_t и зачем ( без него работает)
2. почему без цикла массив не выводится?
3. как сделать так, чтобы файл создавался, например, на рабочем столе, а не в папке проекта 

Спасибо.

Это сообщение отредактировал(а) winsent7 - 29.12.2010, 17:42
PM MAIL   Вверх
Crafty
Дата 29.12.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(winsent7 @  29.12.2010,  17:37 Найти цитируемый пост)
1. что такое size_t и зачем ( без него работает)

Цитата

Тип size_t - базовый беззнаковый целочисленный тип языка Си/Си++. Является результатом выполнения оператора sizeof. Размер типа выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива.

http://forum.vingrad.ru/articles/topic-275...ze-ptrdiff.html

Цитата(winsent7 @  29.12.2010,  17:37 Найти цитируемый пост)
2. почему без цикла массив не выводится?

Так массив же двумерный, поэтому выводить нужно построчно.

Цитата(winsent7 @  29.12.2010,  17:37 Найти цитируемый пост)
3. как сделать так, чтобы файл создавался, например, на рабочем столе, а не в папке проекта 

В winXP вот так можно
Код

std::ofstream out("C:\\Documents and Settings\\All Users\\Desktop\\test.txt");

или
Код

std::ofstream out("адрес рабочего стола\test.txt");

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


Новичок



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

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



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


Эксперт
****


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

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



Цитата(winsent7 @  29.12.2010,  18:37 Найти цитируемый пост)
как сделать так, чтобы файл создавался, например, на рабочем столе, а не в папке проекта

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

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

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

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

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


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

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


 




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


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

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