Автор Тема: Програмирование на C++  (Прочитано 76924 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1605
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #390 : 25 Май 2011, 13:33:10 »
Там какая-то хитрая сложная реализация специально для одномерного динам. массива сделана чтобы удобно было, по этой же причине ты можешь передавать функциям одномерный массив не указывая его размер, а двумерный нет. То же самое и в дельфи с паскалем.
Вон оно что?!Могли бы реализовать и для двух - трёх мерных. Лентяи. :)

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #391 : 25 Май 2011, 13:43:00 »
GManiac,по поводу объявлений функций с параметрами без имён - забыл добавить что в исключениях это удобно и можно сделать вот так
  try
   {
      cout << "  Function throwException throws an exception\n";
      throw exception(); //сгенерировать исключение
   }

// поймать наше исключение (имя не надо, но при этом исключение будет поймано и передано по ссылке тоесть ничего копироваться не будет)
// такой вот финт ушами
   catch ( exception & )
   {
      cout << "  Exception handled in function throwException"
         << "\n  Function throwException rethrows exception";
      throw; // выбросить исключение другому обработчику
   }
Думаю этот пример будет более полезным и понятным чем мой прошлый.

Добавлено позже:
Пи.Си:
На данный момент самый конструктивный срач на эму-ленде - никто никого не называет утятами, дураками и фанбоями. Удивительно :D

Оффлайн DeniSS

  • Пользователь
  • Сообщений: 1088
  • Пол: Мужской
  • Сама скрытность
    • ВКонтакте
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #392 : 25 Май 2011, 13:56:50 »
А я в детстве на БАСИКе писал, он круче всех  :lol:

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7528
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #393 : 25 Май 2011, 14:00:50 »
Там какая-то хитрая сложная реализация специально для одномерного динам. массива сделана чтобы удобно было, по этой же причине ты можешь передавать функциям одномерный массив не указывая его размер, а двумерный - нет. То же самое и в дельфи с паскалем.
Но как?! (с) Мосс.
Код:
type
  TMyArray = array of array of string;
var
  MyArray:TMyArray;

function Diag(X:TMyArray):TMyArray;
var z:integer;
begin
     Result:=X;
     for z:=0 to 3 do
         Result[z][z]:='Z='+IntToStr(z)+':Z='+IntToStr(z);
end;

procedure TForm1.FormShow(Sender: TObject);
var x,y:integer;
    l:string;
begin
     SetLength(MyArray,4);
     for x:=0 to 3 do SetLength(MyArray[x],4);
     for x:=0 to 3 do
         for y:=0 to 3 do
             MyArray[x][y]:='X='+IntToStr(x)+':Y='+IntToStr(y);
     memo1.Lines.Clear;
     memo1.Lines.Add('Before');
     for y:=0 to 3 do begin
         l:='';
         for x:=0 to 3 do
             l:=l+MyArray[x][y]+'  ';
         Memo1.Lines.Add(l);
         end;
     MyArray:=Diag(MyArray);
     memo1.Lines.Add('After');
     for y:=0 to 3 do begin
         l:='';
         for x:=0 to 3 do
             l:=l+MyArray[x][y]+'  ';
         Memo1.Lines.Add(l);
         end;
end;
Результат:
Before
X=0:Y=0  X=1:Y=0  X=2:Y=0  X=3:Y=0  
X=0:Y=1  X=1:Y=1  X=2:Y=1  X=3:Y=1  
X=0:Y=2  X=1:Y=2  X=2:Y=2  X=3:Y=2  
X=0:Y=3  X=1:Y=3  X=2:Y=3  X=3:Y=3  
After
Z=0:Z=0  X=1:Y=0  X=2:Y=0  X=3:Y=0  
X=0:Y=1  Z=1:Z=1  X=2:Y=1  X=3:Y=1  
X=0:Y=2  X=1:Y=2  Z=2:Z=2  X=3:Y=2  
X=0:Y=3  X=1:Y=3  X=2:Y=3  Z=3:Z=3  
Я по ходу работы такие хитрожопые конструкции в куче передавал в процедуры/функции в дельфе (и извлекал кстати тоже), что у некоторых тут волосы на заднице начнут шевелиться. И ничего, работает. А вот TP7 такого не позволял, да.
« Последнее редактирование: 25 Май 2011, 14:04:21 от HardWareMan »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #394 : 25 Май 2011, 14:29:21 »
HardWareMan,ты щедрый на комментарии  :)  Но если я правильно понял то ты передаёшь не двумерный массив, ты передаёшь что-то вроде указателя. Спецификация же не позволяет создать функцию
void print(int a[][], int z)что в с++ что в делфи. Но логично что это можно обойти и сделать что-то вроде этого
void print(int *a[], int m,int n)
{
    for (int i=0;i<m;i++)
     for (int j=0;j<n;j++)
      cout<<a[i][j]<<'\t';
}
int main ()
{
    int m,n;
    cin>>m>>n;
    int *a[m];
    for (int i=0;i<m;i++)
    {
        a[i]=new int [n];
        for (int j=0;j<n;j++)
         a[i][j]=i*j;
    }
    print (a,m,n);
}
Волосы на жопе шевелиться от реализации на с++ не должны, как на дельфи не знаю  :)

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #395 : 25 Май 2011, 14:50:17 »
gepar, не знаю, почему мой дизасм у тебя не запускается, у меня на всех компах работает. Правда, я его компилил с минимальной либой (msvcrt7 что ли), поэтому он такой маленький, и возможно, требует редистрибутейблы. Но у тебя ведь стоит VS!
Написан он на VC++ 2003, никаких дотнетов.

Mr2, то ты говоришь, что C++ знаешь, потом говоришь, что синтаксис не знаешь. Понятней уж скажи. Просто напиши пример, подобный моему, с массивами.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1605
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #396 : 25 Май 2011, 15:17:59 »
Mr2, то ты говоришь, что C++ знаешь, потом говоришь, что синтаксис не знаешь. Понятней уж скажи. Просто напиши пример, подобный моему, с массивами.
sum( [ 2, 3, 4, 5 ] ) такой херни в C++ не видел. >:(
Опиши задачу, может чего и сделаю. Твои примеры мне не о чём не говорят.


Добавлено позже:
суммирование всех элементов динамического массива, с индекса 0 до его конца

for (int i=0; i<5 ;++i;){
 array[i]+=array[i];
}

суммирование всех элементов статического массива, например, с 1-го по 5-й, если он был объявлен как array[1..5]

int sum =0;
for (int i=0; i<5 ;++i;){
 sum+=array[i];
}

суммирование фактически переданных в вызов чисел: 2 + 3 + 4 + 5.
 Как я понял то же что и предыдущие задание.
« Последнее редактирование: 25 Май 2011, 15:36:44 от Mr2 »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #397 : 25 Май 2011, 15:44:09 »
Я же выше описывал. Ладно, заново. Готовый проект для дельфи, засовываешь и компилишь. Комментарии там же.
writeln я специально засунул внутрь функции, чтобы не менять вызовы.

Добавлено позже:
Ты это как функции оформи.

Добавлено позже:
Как функции, которые можно использовать по-нормальному, а не от 1 до 5 для одного случая, так для одного массива, сяк для другого.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1605
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #398 : 25 Май 2011, 16:21:16 »
Я же выше описывал. Ладно, заново. Готовый проект для дельфи, засовываешь и компилишь. Комментарии там же.
writeln я специально засунул внутрь функции, чтобы не менять вызовы.
Не говори больше этого слова! :D Я не знаю синтаксис Delphi.  <_<

Добавлено позже:
Ты это как функции оформи.
А в чём подвох? :?
Добавлено позже:
Как функции, которые можно использовать по-нормальному, а не от 1 до 5 для одного случая, так для одного массива, сяк для другого.
//25.05.2011 Операции с массивом 01.
// Author by Mr2


#include<iostream>
using namespace std;

void arrayFn(int array[],int size);

int main(){
 int sizeA =5;
 int array[]={1,2,3,4,5};
 arrayFn(array, sizeA);
 system("pause");

}
void arrayFn(int array[],int size){  
     int sum =0;
     for (int i=0; i<size ;++i)
      sum+=array[i];
     cout << "Summ all numbers is: "<<sum <<endl;  
     for (int i=0; i<size ;++i){
      array[i]+=array[i];    
      cout << "Summ array is: "<<array[i] <<endl;
 }
}



Добавлено позже:
Кажется я понял в чём подвох.Сейчас GManiac напишит спасибо за функцию, а то самому в лом было писать. :lol:
//25.05.2011 Операции с массивом 02.
// Author by Mr2


#include<iostream>
using namespace std;

void arrayFn(int array[],int size);

int main(){
 int sizeA =5;
 int array[sizeA];
 for(int i=0,v=1; i<sizeA ;++i,++v)
  array[i]=v;
 arrayFn(array, sizeA);
 system("pause");

}
void arrayFn(int array[],int size){  
 int sum =0;
 for (int i=0; i<size ;++i)
  sum+=array[i];
 cout << "Summ all numbers is: "<<sum <<endl;  
 for (int i=0; i<size ;++i){
  array[i]+=array[i];    
  cout << "Summ array is: "<<array[i] <<endl;
 }
}
« Последнее редактирование: 25 Май 2011, 16:26:18 от Mr2 »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #399 : 25 Май 2011, 16:28:31 »
Цитата
Сейчас GManiac напишит спасибо за функцию, а то самому в лом было писать.
Как ты угадал?  :lol: Цель примера была показать, что и там, и там есть гибкость. А в дельфях даже размер не надо указывать, и индекс передаётся индексом, а не указателем (например, начать вычисления с 3-го элемента).
Мне, например, бывает удобно написать функцию, берущую array of string, а потом давать ей сразу при вызове динамическое число строк. Чтобы не создавать массив, загонять в него строки, а потом кидать его в функцию. Удобно.
« Последнее редактирование: 25 Май 2011, 16:31:34 от GManiac »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #400 : 25 Май 2011, 16:35:49 »
Цитата: Mr2
А в чём подвох?
Подвох в разделении у борланда на функции и подрограммы  :)

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1605
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #401 : 25 Май 2011, 16:43:22 »
Как ты угадал?  :lol:
Да я смотрю что то ты  мутишь(раздуваешь из мухи слона). Вот я и подумал что то не то. :)
Цель примера была показать, что и там, и там есть гибкость.

Так это и так ястно, если бы был идеальный я.п. то все бы писали на нём.
А в дельфях даже размер не надо указывать, и индекс передаётся индексом, а не указателем (например, начать вычисления с 3-го элемента).
Круто, но в последнее время мне не приходится передавать массив в функцию, я пишу массив в класс и с ним работаю.
Мне, например, бывает удобно написать функцию, берущую array of string, а потом давать ей сразу при вызове динамическое число строк. Чтобы не создавать массив, загонять в него строки, а потом кидать его в функцию. Удобно.
Но это опять же кого что устраивает.
Цитата: gepar
Подвох в разделении у борланда на функции и подрограммы
А в чём разница?  0_0

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #402 : 25 Май 2011, 16:51:19 »
Mr2,точнее функций от подпрограмм что называют там процедурами.  Функции там нужна для одного значения, а процедура для работы с несколькими. Что-то вроде различия между int (int a) и void (int a). При этом их нельзя путать, я поначалу путал помню в паскале, там одна из них (наверное функция) должна обязательно при этом возвращать значение... :)
« Последнее редактирование: 25 Май 2011, 16:54:23 от gepar »

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1605
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #403 : 25 Май 2011, 16:57:22 »

 :lol:

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7528
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #404 : 26 Май 2011, 07:20:56 »
HardWareMan,ты щедрый на комментарии  :)  Но если я правильно понял то ты передаёшь не двумерный массив, ты передаёшь что-то вроде указателя.
КЭП. Все дело в том, что какому-то пи@#$у на заре х86 пришло в голову передавать параметры в процедуру или функцию через системный(!) стэк(!!) кода(!!!) вместо простого указателя ВР на кучу, где все, собственно, по факту и лежит. Естественно, туда не влезут все массивы, поэтому на большие структуры передаются указатели. Эту говноидею подхватили все компиляторописаки и вот мы имеет то, что мы имеем (класс сбоя/уязвимости "переполнение буфера", позволяющий исполнить код). Но это все лирика, да.
Спецификация же не позволяет создать функцию
void print(int a[][], int z)что в с++ что в делфи. Но логично что это можно обойти и сделать что-то вроде этого
Да, объявить многомерный динамический массив как параметр функции не могу по причине ограничений компилятора (он требует "[Error] Unit1.pas(23): Identifier expected but 'ARRAY' found"). Но никто не мешает идентификатор сделать многомерным массивом, правда? В остальном ты прав, так делают все серьезные программисты, особенно кто пишет под систему и в особенности драйвера: передаем указатель(ли) и размер. Тому, кто работал с WINAPI это знакомо.

Mr2,точнее функций от подпрограмм что называют там процедурами.  Функции там нужна для одного значения, а процедура для работы с несколькими. Что-то вроде различия между int (int a) и void (int a). При этом их нельзя путать, я поначалу путал помню в паскале, там одна из них (наверное функция) должна обязательно при этом возвращать значение... :)
Садись, два. Определение функци и процедуры звучит примерно так: функция возвращает в себе результат, а процедура нет. Тем не менее, конструкции типо:
procedure MyProc(var A:dword; const B:word); и function MyFunc(var A:dword; const B:word):boolean; будут одинаково возвращать результат в A (если А будет изменено внутри процедуры или функции), и использовать B как константу. Если var не писать, то подразумевается const. Функция в таком случае удобна тем, что может возвращать булево как признак ошибки. Например:
var A:string;
    c:integer;

function GetBuf(var A:string;B:byte):boolean;
begin
       GetBuf:=true;
       case B of
         0 : A:='Some 0';
         1 : A:='Some 1';
         else GetBuf:=false;
         end;
end;
      

....
c:=0;
while GetBuf(A,0) do begin
   writeln(A); inc(c);
   end;
...
« Последнее редактирование: 26 Май 2011, 07:49:18 от HardWareMan »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #405 : 26 Май 2011, 14:09:39 »
Цитата: HardWareMan
Садись, два.
Я же написал сразу что точно различия не помню  уже, два года прошло, а я за это время паскаль почти не трогал  :)

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #406 : 01 Июнь 2011, 01:38:19 »
Оживлю тему: как же в дебагере понаблюдать за состояниями потоков? Я нашёл как следить за переменными, а за потоками как? Иначе мне не видно что я запихнул в поток через putback или другую подобную функцию.

Добавлено позже:
И ещё мааленький вопрос: когда я выбрасываю исключение стандартного класса exception то как его назвать (ну код или текст там) чтобы потом через exception.what() оно выводило этот текст/код? Естественно exception.what()  я уже буду применять к конкретному обьекту класса exception, надеюсь понятно выразился.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #407 : 01 Июнь 2011, 22:41:58 »
Только что столкнулся с тем что переменная которую будут возвращать должна быть явно объявлена, притом не в каком-то условии
int abc(double a)
{
    if (a>0)
     int x=3;
    else
     int x=4;
    return x;
};
Странно, я раньше думал что с++ даёт больше свободы.

Добавлено позже:
Странно, Дейтел упорно пишет что catch-обработчики double и int бессмысленны и всегда будет использоваться catch-обработчик double (через приведение типа). Но вот моя тестовая программа показала другое
int main()
{
    int x;
    cin>>x;
    try
    {
        if (x>10)
         throw 5;
        if (x<10)
         throw 2.33;
    }

    catch (double)
    {
        cout<<"Get double";
    }
    catch (int)
    {
        cout<<"Get int";
    }
    return 0;
}

это как понимать?  o_0

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #408 : 02 Июнь 2011, 00:27:29 »
Цитата
Только что столкнулся с тем что переменная которую будут возвращать должна быть явно объявлена, притом не в каком-то условии
Странно, я раньше думал что с++ даёт больше свободы.
Советую вернуться в основам и ещё раз внимательно перечитать об областях видимости переменных.

Цитата
это как понимать?
Понимать, что Дейтел не прав.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #409 : 02 Июнь 2011, 13:12:06 »
Цитата: HoRRoR
Советую вернуться в основам и ещё раз внимательно перечитать об областях видимости переменных.
Да нет, я об этом:
int abc(int x)
{
if (x>=0)
 int z=5;
else
 int z=2;
return z;
}

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #410 : 02 Июнь 2011, 14:14:07 »
А я, по-твоему, о чём?

Добавлено позже:
http://www.learncpp.com/cpp-tutorial/41-blocks-compound-statements-and-local-variables/

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #411 : 02 Июнь 2011, 14:16:45 »
HoRRoR,да, я не учёл что переменная всё равно то сразу же удаляется.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #412 : 06 Июнь 2011, 14:03:46 »
HoRRoR,вдруг ты не заметил, но знаешь как это сделать зацитирую часть своего сообщения:
Цитата: gepar
как же в дебагере понаблюдать за состояниями потоков? Я нашёл как следить за переменными, а за потоками как? Иначе мне не видно что я запихнул в поток через putback или другую подобную функцию.
Я так и не понял как это сделать, в книгах что-то о дебагере компиляторов упоминают толком лишь о их существовании, но не более.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #413 : 06 Июнь 2011, 15:00:00 »
Не знаю, никогда не возникало такой необходимости.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #414 : 06 Июнь 2011, 15:03:48 »
HoRRoR,так а какая тогда польза вообще с дебагера помимо того что можно посмотреть что есть на текущем шаге в переменных?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #415 : 06 Июнь 2011, 15:18:04 »
Какая польза от компьютера, если он не может варить кофе? Да уже одни точки останова делают отладчик чертовски полезной штукой.
Мне никогда не приходилось отслеживать состояние потоков, мне хватало знания логики работы собственной программы. Можешь почитать про реализацию потоков используемым тобой способом и посмотреть данные переменной, в которой хранится информация о потоке.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #416 : 06 Июнь 2011, 15:36:59 »
gepar, брекпоинты (безусловные или по условию), вотчи, просмотрщик памяти - что еще надо для полного счастья ?
всякие очень высокоуровневые фичи тут в принципе не возможны, т.к. отладчик это отладчик готового exe-шника а не интерпретатор какой-нибудь.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #417 : 15 Июнь 2011, 17:53:39 »
Начал работать с файлами (да, медленно совсем что-то в последнее время изучение с++ продвигалось, вот уже и каникулы пришли, надеюсь теперь время будет появляться на с++ почаще).
От чего идут сокращения в режимах открытия файла? Чтобы легче было запомнить, ну in, out и trunc это понятно и логично, а вот app - дописать файл и ate тоже похожая функция (кстати в чём отличие дописывания в конец файла от открытия и перевода курсора в конец файла?) от каких слов они сокращались?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #418 : 15 Июнь 2011, 18:18:12 »
Видимо ты даже не пытаешься искать информацию самостоятельно, сразу пишешь сюда.
Видимо, app - append, ape - append to end. И при чём тут функция? Достаточно было код глянуть:
/// Seek to end before each write.
static const openmode app = _S_app;

/// Open and seek to end immediately after opening.
static const openmode ate = _S_ate;

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Програмирование на C++
« Ответ #419 : 15 Июнь 2011, 21:48:14 »
HoRRoR,нет, слово app слишком вошло в обиход (в виде сокращения от application) и найти ответ было сложно. Спасибо за ответ.

Добавлено позже:
HoRRoR,а вот разница между ними. В приведённом тобой кусочке одно написано что app добавляет в конец, а ate открывает и сдвигает курсор в конец файла, и дальше будет запись но где же разница? Всё равно если я сделаю в программе file<<information значение  information допишется в конец файла независимо от того открыл ли файл через app или через ate, а где же разница? Наверняка же не просто так их два придумали  :)

Добавлено позже:
И ещё небольшой вопрос почему так:
   ifstream file;
    file.open("test.txt", ios::in);
    if(!file)
     exit(100500);
    while(file>>c)
     cout<<c;
    file.close();
    return 0;
Будет выведено всё без переводов строки? Ведь символьная переменная вполне может принимать значение \n так в чём же проблема?  :-\