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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите 
:(
    Опции темы
DimanLin
Дата 12.1.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код
#include <iostream>
#include <fstream>
#include <string>

int main()
{
    using namespace std;
    ifstream fin;
    fin.open("dic.dic");
    string temp;
    string mystr = "mystr";
    
    while(getline(fin, temp))
    {
        cout << temp << mystr << endl;
    }
        
    return 0;
}

Есть фаил dic.dic, внём расположенны строки:
asdasd
dfgdfg
ghjghjgh
rtyrty
werwrwe

Мне нужно к каждой строке дописать "mystring" и вывести на экран.

Модератор: Название темы должно отражать ее суть!

M
bsa
Пользуйся кнопкой "Код"


Это сообщение отредактировал(а) bsa - 12.1.2009, 17:39
PM MAIL   Вверх
russians
Дата 12.1.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



DimanLin, не совсем понятно, что нужно.
Нужно:
a) открыть файл, в каждой строке дописать строку, сохранить файл и вывести его содержимое на экран...
или
б) отрыть файл, записать строку в temp, прибавить к temp строку и вывести на экран
PM MAIL   Вверх
DimanLin
Дата 12.1.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Б!
PM MAIL   Вверх
pan2004
Дата 12.1.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И что, не получается?


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
russians
Дата 13.1.2009, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



DimanLin, а кто поток закрывать будет? smile
fin.close() добавь.
Если надо сконкатенировать строки, strcat(str, substr) используй (хотя мешать С и С++ не есть благо, в С++ используется для этого операция сложения "+", так что лучше используй её).

Это сообщение отредактировал(а) russians - 13.1.2009, 01:03
PM MAIL   Вверх
Kallikanzarid
Дата 13.1.2009, 01:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

а кто поток закрывать будет?

Деструктор  smile 
PM MAIL   Вверх
DimanLin
Дата 13.1.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(pan2004 @ 12.1.2009,  19:44)
И что, не получается?

Вот что в поток валится:
mystrf
mystrfo
mystrgomez
mystrj
mystrkd
mystrla
mystrlako
mystrlaz
mystrlili
mystrlin
mystrlot
mystrluis
mystrm
mystrmn
mystrr
mystrroma
mystrs
mystrsa

Т.е сначало пишется слово из файла а потом коретка отходит назад и поверх этого слова пишется "mystr", далее переход на новую строку и всё сначало. Сам не пойму как так... Но он так делает.

PM MAIL   Вверх
bsa
Дата 13.1.2009, 13:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



проверяй свой файл dic.dic - у него конец строки виндовый ("\a\n"), а нужен nix-овый ('\n'). Воспользуйся командой dos2unix.
PM   Вверх
stat007
Дата 13.1.2009, 19:47 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вообщето: using namespace std; пишетс перед функцией main()
PM MAIL   Вверх
pan2004
Дата 13.1.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(stat007 @  13.1.2009,  19:47 Найти цитируемый пост)
вообщето: using namespace std; пишетс перед функцией main()

Да неужели? Кто это сказал?
ПС И вообще так советуют не делать. using std::cout; using std::cin;


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Lazin
Дата 13.1.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(stat007 @  13.1.2009,  19:47 Найти цитируемый пост)
вообщето: using namespace std; пишетс перед функцией main() 

правда что-ли?
PM MAIL Skype GTalk   Вверх
russians
Дата 14.1.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DimanLin @ 13.1.2009,  13:19)
Цитата(pan2004 @ 12.1.2009,  19:44)
И что, не получается?

Вот что в поток валится:
mystrf
mystrfo
mystrgomez
mystrj
mystrkd
mystrla
mystrlako
mystrlaz
mystrlili
mystrlin
mystrlot
mystrluis
mystrm
mystrmn
mystrr
mystrroma
mystrs
mystrsa

Т.е сначало пишется слово из файла а потом коретка отходит назад и поверх этого слова пишется "mystr", далее переход на новую строку и всё сначало. Сам не пойму как так... Но он так делает.

А вот это надо было написать с самого начала...
PM MAIL   Вверх
ZeroPoint
Дата 20.1.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Это происходит из-за разной интерпретации управляющего символа 
Код
'\n'
 в Unix и Dos(Win).
Тут немного кода, который должен понимать оба варианта. Писалось на скорую руку, так, что оптимизировать есть что smile
Код

#include <iostream>
#include <fstream>
#include <string>

int main()
{
    using namespace std;
    ifstream fin;
    fin.open("dic.dic");
    string temp;
    string mystr = "mystr";

//    while(getline(fin, temp))
//    {
//        cout << temp << mystr << endl;
//    }

    #define    _MyBuffSize 2048
    char cBuff[2048] = {0,};

    while( !fin.eof() )
    {
        char cCh;

        temp.clear();

        do{
            fin.get( cCh );

            if( cCh != '\x0D' && cCh != '\n' && (temp.size() < _MyBuffSize-1) )
            {
                if( cCh != '\x0A'  ) temp += cCh;
            }
            else break;

        }while( !fin.eof() );

        cout << temp << mystr << endl;
    }

    return 0;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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