PHP: string& append ( const string& str ); Appends a copy of str. string& append ( const string& str, size_t pos, size_t n ); Appends a copy of a substring of str. The 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 str, an out_of_range exception is thrown. string& append ( const char * s, size_t n ); Appends a copy of the string formed by the first n characters in the array of characters pointed by s. string& append ( const char * s ); Appends a copy of the string formed by the null-terminated character sequence (C string) pointed by s. The length of this character sequence is determined by the first ocurrence of a null character (as determined by traits.length(s)). string& append ( size_t n, char 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;
PHP: str.append((char *)n); так не получается, пробовал ещё вопрос: PHP: descr = new char[100]; strcpy(descr, "std"); if(descr == "std") ... условие не срабатывает как сравнить выделенную память со строкой?
книжки почитать... strcmp юзай ps: локальные строки делать динамическими с фиксированной длиной - бред. если размер тебе известен - делай фиксированный массив.
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; }
помогите разобраться если создавать объект обычным способом - всё нормально а если через конструктор-копировшик - то ошибка http://www.sendspace.com/file/6c3idu в архиве класс и пример, показывающий ошибку (самая последняя строка)
Все же не поленился и скачал, и так ... Это простите что такое? )) По вашему строка "empty" имеет длину в 1 символ? Аналогично Выделяем память не под массив а удаляем как массив Поставьте descr = new char[100]; (или же другую нужную длину). П.С. И вообще в подобных случаях ну очень хорошо помогает отладчик )
блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо а как же тогда создавать массивы, если длина неизвестна изначально?
char *mas; int a; printf("a= "); scanf("%d",&a); mas = new char[a]; delete(mas); mas = 0; вот простой пример как Очень наглядно, что такое указатели и как выделяется память, можно посмотреть в отладчике.
Есть очень удобный класс string для строк, если не известно кол-во элементов - есть не менее удобный контейнер vector )
Тот кто это сказал, видимо имел в виду создание массива под буфер для чтения из файла или сокета, например char buff[1024] то есть в этом случае ты знаешь что не будешь читать туда более 1024. А когда длина неизвестна (например нужно скачать страницу в память) то перевыделяешь память, затем копируешь туда содержимое буфера и так далее. Почитай книгу по C без ++.
лол. ты не находишь, что ты говоришь о двух разных видах массивов? Читайте блиа книжки, в первых уроках все это разжовывается. Ответ получишь быстрее, чем на форуме, с примерами и шутками прибаутками от автора.
как сравнить два массива типа 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; }
Создаю консольное приложение (т.е. приложение без формы) с 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 В чем моя ошибка?
проблема та же, что и у всех - книжки не читаем. читаем главу что есть this и почему он не валиден в функциях, не принадлежащих классам и в статических методах класса. c++ - не делфи. тут нада немного думать и немного знать...
даите пожауиста хорошое пособие по связаным спискам я искал в гоогле но чето немагу ничо талковова наити
нужен человек, хорошо знающий С++, чтобы дописать и исправить три небольших программки на голых плюсах подробности в аське 867766 90