1)Что такое динамически созданный объект в с++ ? 2) Использовал пример: PHP: int main() { int x = 5; int *s = &x; printf("%d",s); getch(); } Если подставить s,то выводит адрес переменной x,а если *s,то значение.Почему такой результат ? Указатель ведь адрес содержит,а не само значение.Из определения.
Уважаемое сообщество посоветуйте пользовательский класс для работы со строками/текстом, если такой имееться, а именно интересует функции подсчета кол-ва слов в тексте, возможность замены слов и т.д.Спасибо.
http://www.cplusplus.com/reference/string/string/ для множества строк http://www.cplusplus.com/reference/stl/list/
Code: int cpnum; ... if (cpnum == 0) cout << "Orig."; else cout << cpnum; если написать так, то все норм, но если заменить if на Code: cout << cpnum == 0 ? "Orig." : cpnum; то компилятор выдает ошибку Почему так происходит? visual studio 2008.
Ну во-первых у оператора "<<" приоритет больше, чем у "?:", поэтому сначала выведется cpnum, а потом то, что вернет cout будет сравниваться с 0... вобщем надо заключать в скобки весь тернарный оператор. А во-вторых подстановка шаблонов происходит во время компиляции, и тут подставляется "Orig", т.е. char а потом в него выводится int-вое значение. Потому и ругается. В твоем случае лучше написать так: Code: (cpnum == 0) ? cout << "orig" : cout << cpnum;
Почему не могу использовать cout внутри класса ? PHP: #include <stdio.h> #include <conio.h> #include <iostream> class Sum { int x,y,s; //private method of access data public: void vhod_1(int x) { x = 5;cout << x;} void vhod_2(int y) { y = 3;} void summa(); }; int main() { }
Возникла ещё проблема - хочу без использования методов класса в мэйне вывести значение компонента х класса Sum,а мне метод возвращает адрес на этот компонент,а не его содержимое.Как исправить ? PHP: #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; class Sum { public: int x,y,s; int vhod_1(int x) { x = 5;} int vhod_2(int y) { y = 3;} }; int main() { Sum fuck,*s = &fuck; cout << s -> vhod_1(5); getch(); }
А как же int перед методом ?Понял свою ошибку...А адрес вернулся на что ?На метод чтоли? Если так,то тогда как два метода могут размещаться по одному адресу ? У меня вернуло 2293116 или вроде того,когда я обращался к двум методам после двух компиляций.
йопт, GenTao, на предыдущей странице писал про приоритет оператора "<<". В скобках надо писать: std::cout << (s -> vhod_1(5));
возвращается значение регистра eax. т.е. рандомный мусор. так же будет если использовать неинициализированную локальную переменную. PS: x - не компонента. это поле, член данное. В какой буке поле называют компонентой?
Хотел написать простенькую програмульку которая читает из файла строки и по указанному раделителю заносит результат в другой файл. Пример: входной файл тратата : не нужная ***ня выходной тратата вот код, он компилируеться, но при выполнении выдает ошибку str2 being used without beiing defined. Может дело в файле или еще что-то вот сам код Code: // word_parser.cpp : Defines the entry point for the console application. // #include <iostream> using namespace std; int main() { FILE *fp,*fp2; unsigned int t; char buff[100],*str,*str2; fp=fopen("keys.txt","r+"); fp2=fopen("key_pasrse.txt","w+"); while(!feof(fp)){ str=fgets(buff,100,fp); t=strspn(str,":"); strncpy(str2,str,t+1); fputs(str2,fp2); } return 0; Спасибо.
str2 - указатель, содержащий мусор(пару постов выше прочитай мой). ты используешь переменную не задав ей значения. в данном случае ты пытаешься писать в хзкакой участок памяти.
2Ra$cal Я пробовал str2= new char[100]; тогда просто при выполнении выдавало ошибку и предлагала дизасемблировать. Уже начал заниматься шаманством, но помоему вредный процесс работа программы это же не волшебство. Так что взываю к сообществу, направить на путь.
Я не знаю ни С не С++, и все таки, а нельзя сделать что то вроде: str=str.Replace(':','\n') ? Это я написал как на C# но думаю функция Replace и в С должна быть)))
Смысл менять разделитель на новую строку? Ведь нужно брать только то что до разделителя, а остальное пропускать до новой строки....