[ 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. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Как прикрутить интеловский конпелятор к Visual Studio 2008 ?
     
  2. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    1)Что такое динамически созданный объект в с++ ?
    2) Использовал пример:

    PHP:

    int main
    () {
        

    int x 5;
    int *= &x;
    printf("%d",s);
    getch();


    }

    Если подставить s,то выводит адрес переменной x,а если *s,то значение.Почему такой результат ? Указатель ведь адрес содержит,а не само значение.Из определения.
     
    #3962 GenTao, 16 Oct 2009
    Last edited: 16 Oct 2009
  3. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    может сперва стоит прочитать книжку
     
  4. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    Уважаемое сообщество посоветуйте пользовательский класс для работы со строками/текстом, если такой имееться, а именно интересует функции подсчета кол-ва слов в тексте, возможность замены слов и т.д.Спасибо.
     
  5. Irdis

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

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    http://www.cplusplus.com/reference/string/string/
    для множества строк
    http://www.cplusplus.com/reference/stl/list/
     
  6. Глюконатор

    Joined:
    4 Aug 2008
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Code:
    int cpnum;
    
    ...
    
    if (cpnum == 0) cout << "Orig.";
    else cout <<  cpnum;
    
    если написать так, то все норм, но если заменить if на
    Code:
    cout << cpnum == 0 ? "Orig." : cpnum;
    
    то компилятор выдает ошибку
    Почему так происходит?

    visual studio 2008.
     
  7. t4Nk

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

    Joined:
    23 Sep 2007
    Messages:
    70
    Likes Received:
    33
    Reputations:
    0
    Ну во-первых у оператора "<<" приоритет больше, чем у "?:",
    поэтому сначала выведется cpnum, а потом то, что вернет cout будет сравниваться с 0... вобщем надо заключать в скобки весь тернарный оператор.

    А во-вторых подстановка шаблонов происходит во время компиляции, и тут подставляется "Orig", т.е. char а потом в него выводится int-вое значение. Потому и ругается.

    В твоем случае лучше написать так:
    Code:
    (cpnum == 0) ? cout << "orig" : cout << cpnum;
     
  8. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    Почему не могу использовать 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) { 5;cout << x;}
          
    void vhod_2(int y) { 3;}
          
    void summa();
          
          };
          
          
          
    int main() { }

     
  9. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    Возникла ещё проблема - хочу без использования методов класса в мэйне вывести значение компонента х класса 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) { 5;}
          
    int vhod_2(int y) { 3;}
          
          };
          
          
          
    int main() {
              
          
    Sum fuck,*= &fuck;
          
    cout <<  -> vhod_1(5);
          
    getch();
          
          }

     
  10. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Ты здесь видишь что бы где то значение возвращалось? я нет.
     
  11. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    А как же int перед методом ?Понял свою ошибку...А адрес вернулся на что ?На метод чтоли? Если так,то тогда как два метода могут размещаться по одному адресу ? У меня вернуло 2293116 или вроде того,когда я обращался к двум методам после двух компиляций.
     
    #3971 GenTao, 18 Oct 2009
    Last edited: 18 Oct 2009
  12. t4Nk

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

    Joined:
    23 Sep 2007
    Messages:
    70
    Likes Received:
    33
    Reputations:
    0
    йопт, GenTao, на предыдущей странице писал про приоритет оператора "<<". В скобках надо писать:
    std::cout << (s -> vhod_1(5));
     
  13. Ra$cal

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    возвращается значение регистра eax. т.е. рандомный мусор. так же будет если использовать неинициализированную локальную переменную.

    PS: x - не компонента. это поле, член данное. В какой буке поле называют компонентой?
     
  14. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    Компонент х всмысле переменная).А книга наз. Программирование на С++ Хоменко какого-то
     
  15. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    Хотел написать простенькую програмульку которая читает из файла строки и по указанному раделителю заносит результат в другой файл.

    Пример:
    входной файл
    тратата : не нужная ***ня
    выходной
    тратата

    вот код, он компилируеться, но при выполнении выдает ошибку 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;
    
    Спасибо.
     
  16. Ra$cal

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    str2 - указатель, содержащий мусор(пару постов выше прочитай мой). ты используешь переменную не задав ей значения. в данном случае ты пытаешься писать в хзкакой участок памяти.
     
  17. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2Ra$cal

    Я пробовал str2= new char[100];
    тогда просто при выполнении выдавало ошибку и предлагала дизасемблировать. Уже начал заниматься шаманством, но помоему вредный процесс работа программы это же не волшебство. Так что взываю к сообществу, направить на путь.
     
  18. ichechen

    ichechen New Member

    Joined:
    16 Oct 2009
    Messages:
    33
    Likes Received:
    4
    Reputations:
    8
    Я не знаю ни С не С++, и все таки, а нельзя сделать что то вроде:
    str=str.Replace(':','\n') ?
    Это я написал как на C# но думаю функция Replace и в С должна быть)))
     
  19. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2ichechen

    нет нельзя так как после разделителя есть еще текст и наверное не /n а \r\n
     
  20. rudvil

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

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Смысл менять разделитель на новую строку?
    Ведь нужно брать только то что до разделителя, а остальное пропускать до новой строки....
     
Thread Status:
Not open for further replies.