[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    PHP:
    stringappend ( const stringstr );
        
    Appends a copy of str.
    stringappend ( const stringstrsize_t possize_t n );
        
    Appends a copy of a substring of strThe substring is the portion of str that begins at the character position pos and takes up to n characters (it takes less than n if the end of string is reached before).
        If 
    the position passed is past the end of stran out_of_range exception is thrown
    stringappend ( const char ssize_t n );
        
    Appends a copy of the string formed by the first n characters in the array of characters pointed by s.
    stringappend ( const char );
        
    Appends a copy of the string formed by the null-terminated character sequence (C stringpointed by sThe length of this character sequence is determined by the first ocurrence of a null character (as determined by traits.length(s)).
    stringappend size_t nchar c );
        
    Appends a string formed by the repetition n times of character c.
    Потому и нельзя :)
    PHP:
     int n 5;
        
    string str "test";

        
    str.append((char *)n);
        
    cout << str;  
    если только так и это уже будет не число. или так

    PHP:
     int n 5;
     
    char f[5];
        
    string str "test";
       
    itoa(n,f,10);
        
    str.append(f);
        
    cout << str;  
     
    #3541 St0nX, 19 Aug 2009
    Last edited: 19 Aug 2009
    1 person likes this.
  2. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    PHP:
     str.append((char *)n);
    так не получается, пробовал

    ещё вопрос:
    PHP:
    descr = new char[100];
    strcpy(descr"std");

    if(
    descr == "std")
    ...
    условие не срабатывает
    как сравнить выделенную память со строкой?
     
  3. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    книжки почитать...
    strcmp юзай

    ps: локальные строки делать динамическими с фиксированной длиной - бред. если размер тебе известен - делай фиксированный массив.
     
  4. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    descr это указатель и содержит только адрес выделеной памяти. Если хочеш сравнить юзай strcmp или сам посимвольно перебери и сравни. Как то так:
    PHP:
    int FindString(char *str1,char *str2)
    {
    int nstr1,nstr2,i,j,nstr,sstr;
    nstr1=strlen(str1);
    nstr2=strlen(str2);
    if(
    nstr1>nstr2)
    {
    nstr=nstr1-nstr2;
    for(
    i=0;i<nstr;i++)
    {
    sstr=0;
    for(
    j=0;j<nstr2;j++)
    {
    if(
    str1[j+i]==str2[j])
    {
    sstr++;
    }
    }
    if(
    sstr==nstr2)
    {
    return 
    1;
    }
    }
    }
    else
    {
    return -
    1;
    }
    return 
    0;
    }
     
  5. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Проще использовать для преобразования stringstreams )
     
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    помогите разобраться
    если создавать объект обычным способом - всё нормально
    а если через конструктор-копировшик - то ошибка

    http://www.sendspace.com/file/6c3idu
    в архиве класс и пример, показывающий ошибку (самая последняя строка)
     
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Все же не поленился и скачал, и так ...
    Это простите что такое? ))
    По вашему строка "empty" имеет длину в 1 символ?
    Аналогично
    Выделяем память не под массив а удаляем как массив
    Поставьте descr = new char[100]; (или же другую нужную длину).

    П.С. И вообще в подобных случаях ну очень хорошо помогает отладчик )
     
    #3547 razb, 20 Aug 2009
    Last edited: 20 Aug 2009
  8. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо
    а как же тогда создавать массивы, если длина неизвестна изначально?
     
  9. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    char *mas;
    int a;
    printf("a= ");
    scanf("%d",&a);
    mas = new char[a];
    delete(mas);
    mas = 0;

    вот простой пример как

    Очень наглядно, что такое указатели и как выделяется память, можно посмотреть в отладчике.
     
    #3549 St0nX, 20 Aug 2009
    Last edited: 20 Aug 2009
    2 people like this.
  10. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Есть очень удобный класс string для строк, если не известно кол-во элементов - есть не менее удобный контейнер vector )
     
  11. h4xx0r

    h4xx0r Banned

    Joined:
    15 Aug 2009
    Messages:
    6
    Likes Received:
    1
    Reputations:
    -15
    Тот кто это сказал, видимо имел в виду создание массива под буфер для чтения из файла или сокета, например char buff[1024] то есть в этом случае ты знаешь что не будешь читать туда более 1024. А когда длина неизвестна (например нужно скачать страницу в память) то перевыделяешь память, затем копируешь туда содержимое буфера и так далее. Почитай книгу по C без ++.
     
  12. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    лол. ты не находишь, что ты говоришь о двух разных видах массивов? Читайте блиа книжки, в первых уроках все это разжовывается. Ответ получишь быстрее, чем на форуме, с примерами и шутками прибаутками от автора.
     
    1 person likes this.
  13. new-sl

    new-sl New Member

    Joined:
    27 May 2009
    Messages:
    46
    Likes Received:
    0
    Reputations:
    -1
    как сравнить два массива типа char name1[100]; ? ато блин что я тока неперепробовал мине тока вот етото страшныи способ пришол в голову но чето он мине както ненравится некрасиви какоито
    Code:
    #include <iostream>
    using namespace std;
    
    int main ()
    {
    	char array1[10];
    	char array2[10];
    	cin>>array1;
    	cin>>array2;
     int i=0,j=0;
    	for (;i<sizeof(array1)&&i<sizeof(array2);i++)
    	{
    		if(array1[i]==array2[i])
    		j++;
    		
    	}
    
    	if(j==i)
    		cout <<"same name\n";
    	else
    		cout<<"not same name\n";
    
    system ("pause");
    return 0;
    }
    
     
  14. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    new-sl
    функция memcmp
     
    1 person likes this.
  15. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Создаю консольное приложение (т.е. приложение без формы) с TTcpClient.
    Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #include <windows.h>
    #include <Sockets.hpp>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    TTcpClient *TcpClient1;
    
    WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    TcpClient1 = new TTcpClient(this);
    return 0;
    }
    //---------------------------------------------------------------------------
    
    И получаю ошибку
    Первый раз кодю в Borland C++, говорят, он лучше, всегда кодил в Delphi:)

    В чем моя ошибка?
     
  16. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    проблема та же, что и у всех - книжки не читаем. читаем главу что есть this и почему он не валиден в функциях, не принадлежащих классам и в статических методах класса. c++ - не делфи. тут нада немного думать и немного знать...
     
    1 person likes this.
  17. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Вместо this поставил текущий объект, т.е. TcpClient1 :)
     
    3 people like this.
  18. new-sl

    new-sl New Member

    Joined:
    27 May 2009
    Messages:
    46
    Likes Received:
    0
    Reputations:
    -1
    даите пожауиста хорошое пособие по связаным спискам я искал в гоогле но чето немагу ничо талковова наити
     
  19. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Поищи в данном топике. Совсем недавно обсуждалась тема.
     
    2 people like this.
  20. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    нужен человек, хорошо знающий С++, чтобы дописать и исправить три небольших программки на голых плюсах

    подробности в аське 867766 90
     
    1 person likes this.
Thread Status:
Not open for further replies.