[C++]Преобразовать содержимое указателя в char строку

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by aladin1, 23 Apr 2015.

  1. aladin1

    aladin1 Member

    Joined:
    16 Sep 2009
    Messages:
    330
    Likes Received:
    29
    Reputations:
    7
    Нужно разбить переменную(строку) char details на более мелкие элементы с помощью символа разделителя.Если вывести на экран используя имя указателя, то всё в порядке, проблема в том, что я не знаю как полученные части засунуть в новые переменные для дальнейшего использования.
    До этого для написания парсеров юзал autoIt, там без проблем всё разбивалось на массив и новые переменные(строки) определялись как части массива.
    Code:
    #include "stdafx.h"
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    int main ()
    {
        char details[] = "125.126.125.100;noob;noob1";
        char * string = strtok (details,";");
        cout << string << endl;
        //char ip=?; Тут нужно как-то присвоить переменной ip строку указателя
        //cout << ip << endl; и для проверки вывести на экран
        string = strtok (NULL, ";");
        cout << string << endl;
        //char username=?; Тут нужно как-то присвоить переменной username строку указателя
        string = strtok (NULL, ";");
        cout << string << endl;
        //char password=?; Тут нужно как-то присвоить переменной password строку указателя
    
        return 0;
    }
     
  2. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Code:
    char * ip = (char*)malloc(sizeof(char)*strlen(string)+1);
        strcpy(ip,string);
     
    aladin1 likes this.
  3. aladin1

    aladin1 Member

    Joined:
    16 Sep 2009
    Messages:
    330
    Likes Received:
    29
    Reputations:
    7
    всё заработало, благо дарю!
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    C++03:
    Code:
    #include <iostream>
    #include <string>
    #include <sstream>
    
    int main()
    {
        std::stringstream ss("125.126.125.100;noob;noob1");
        std::string ip, login, password;
        std::getline(ss, ip, ';');
        std::getline(ss, login, ';');
        std::getline(ss, password, ';');
    
        std::cout << ip << std::endl;
        std::cout << login << std::endl;
        std::cout << password << std::endl;
    }
    
    C++11:
    Code:
    #include <iostream>
    #include <string>
    #include <sstream>
    
    int main()
    {
      std::stringstream ss("125.126.125.100;noob;noob1");
      std::string ip, login, password;
      for(auto* str : { &ip, &login, &password })
      {
        std::getline(ss, *str, ';');
        std::cout << *str << std::endl;
      }
    }
    
     
    #4 GRRRL Power, 27 Apr 2015
    Last edited: 27 Apr 2015