ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

18.05.2009, 19:11
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Почитай сначала это
Не вижу смысла повторять то, что уже написано, и не раз написано. Про String^ забудь. Это не чистый с++. Помесь с++ и дотнета. Оно тебе все равно рано.
|
|
|

18.05.2009, 20:14
|
|
Познающий
Регистрация: 23.01.2009
Сообщений: 32
Провел на форуме: 96906
Репутация:
8
|
|
Raskal ты зря думаешь что мне рано и я задаю вопросы потому, что жить скучно. У меня на компе самоучителей по С++ штук 8 валяется....один из них меня заинтересовал "освой С++ за 21 день" и я его читаю.....просто во всех книгах описываются перегруженные функции, операторы, типы данных и классы, как по шаблону....но нигде не написанна разница между массивами данных массивом данных заканчиваюшимся 0 и анси строкой заканчивающейся 0.....Просто после Object Pascal где был тип string такое изобилие строк в с++ мне непонятно......
И если так трудно ответить на такой простой вопрос, может вопрос не такой уж простой?
Я пытаюсь делать так:
private: System::Void bbConn_Click(System::Object^ sender, System::EventArgs^ e) {
String ^szAddr = "172.23.0.74";
SOCKET hSocket;
struct sockaddr_in server;
//Получаем IP servera
szAddr = textBox1->Text;
//Создаем сокет
hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//Заполняем структуру sockaddr_in
server.sin_family = AF_INET;
server.sin_port = htons(1313);
server.sin_addr.S_un.S_addr = inet_addr(szAddr);
iRet = connect(hSocket, server, sizeof(server));
}
А он говорит: error C2664: inet_addr: невозможно преобразовать параметр 1 из 'System::String ^' в 'const char *'
Я и пытаюсь разобратся в изобилии строк С++.....Раздел ведь для новичков....
|
|
|

18.05.2009, 20:31
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
ну а зачем ты себе жизнь усложняешь, используя мэнэджед с++ ? разберись сначала с чистым с++ без всякого гуя. а ты пытаешься все и сразу освоить. char* - обычный массив символов, заканчивается на 0. но не обязательно. ибо в си как таковых строк не было. в си все массивы по сути байтовые, суй что хочешь. просто задание типа char подсказывает программисту, что это массив символов. но ты легко засунешь туда любые байты, которые не отражают никаких символов. а char* как раз растет из си. на деле этот тип данных используют очень редко. только при вызовах апи. ибо в виндос строки представляют из себя также терминированные нулем массивы байтов. но внутри своей программы ты можешь(и даже должен) использовать более адекватные типы. например класс std::string. по сути это просто оболочка для char*. по сути все классы строк - оболочки для char*. они управляют памятью, предоставляют сервисные методы типа toUpper, или перегруженные методы для сравнения и складывания строк. У всех есть метод получения указателя на строку. для того, чтобы как раз использовать эти классы с системными вызовами. дальше идет класс CString из atl или мфц. он весьма удобный, но не кроссплатформенный. у него метод получения строки GetBuffer(). у класса std::string метод получения указателя c_str(). так же операторы перегружены приведения типов, например LPCSTR. а вот использование мэнэджэд с++ приводит к проблемам, ибо по философии дотнет программисту не дается право управлять памятью напрямую. управление памятью лежит на совести вм дотнета. суть в том что мэнэджэд программы не должны вызывать апи и старые функции. потому что это нарушает философию. для этого в дотнете есть ОГРОМНОЕ количество классов, полностью повторяющих апи. именно поэтому учиться с++ с мэнэджэд плюсов мягко говоря глупо. ты учишь наполовину с++ наполовину дотнет, причем не понимаешь, в чем суть дотнета. хочешь делать окошки - используй мфц проекты с++.
Последний раз редактировалось Ra$cal; 18.05.2009 в 20:40..
|
|
|

18.05.2009, 20:41
|
|
Познающий
Регистрация: 23.01.2009
Сообщений: 32
Провел на форуме: 96906
Репутация:
8
|
|
Внушительно.....спасибо...это достойный ответ который многое прояснил..... Держи ++ 
|
|
|

18.05.2009, 20:44
|
|
Познающий
Регистрация: 23.01.2009
Сообщений: 32
Провел на форуме: 96906
Репутация:
8
|
|
Не не дает + ставить говорит:
Вы должны добавить репутацию кому-то еще, прежде чем сможете снова добавить ее Ra$cal.
|
|
|

24.05.2009, 16:37
|
|
Познающий
Регистрация: 20.04.2006
Сообщений: 67
Провел на форуме: 170762
Репутация:
-1
|
|
не работает цикл поиска
задача найти в файле 1.bin байт E9
там он точно есть
однако цикл почему то работает безконечно
то есть прога просто виснет и все
Код:
#include <iostream>
#include <fstream>
using namespace std;
char buffer = 0;
int counter = 0;
int bufer0 = 0;
int bufer1 = 0;
int adres = 0;
const char filename1[] = "1.bin" //имена файлов
const char filename2[] = "2.bin";
int main(void)
{
fstream file1(filename1,ios::in); //открываем файлы
fstream file2(filename2,ios::out);
file1.seekg(adres,ios::beg); //начальная установка адреса чтения (0) чтение с начала файла
file2.seekp(adres,ios::beg); //начальная установка адреса записи (0) запись с начала файла
while(bufer0 != 233) // цикл поиска байта 0xE9
{
file1.seekg(adres); // устанавливаем адрес
file1.read(&buffer,1); // считываем содержимое по адресу в буфер
bufer0 = buffer;
adres ++; // inc adres
} // зацикленно
//закрыть файлы
file1.close();
file2.close();
return 0;
}
|
|
|

20.05.2009, 10:17
|
|
Новичок
Регистрация: 04.05.2007
Сообщений: 10
Провел на форуме: 151190
Репутация:
4
|
|
Как сделать запрет ввода букв в TextBox в Visual Studio 2008 C++
|
|
|

20.05.2009, 14:00
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Как сделать запрет ввода букв в TextBox в Visual Studio 2008 C++
поищи свойство ReadOnly или что то похожее)
|
|
|

23.05.2009, 19:33
|
|
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
Провел на форуме: 505362
Репутация:
66
|
|
[deleted]
Последний раз редактировалось awdrg; 24.05.2009 в 21:48..
|
|
|

23.05.2009, 19:43
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме: 744734
Репутация:
44
|
|
Помогите решить вот такую задачу на языке C
Написать подпрограмму сортировки 2-мерного массива указателей на функции, которые выдают целые значения, ПО СТРОКАМ (использовать сумму значений строки).
Буду очень благодарен! Нужно срочно сдать, но я даже в задание не врубаюсь  ((
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|