(ग)

2013-02-21 12 views
15

उदाहरण के लिए में एक निश्चित चार से पहले सबस्ट्रिंग जाओ, मैं इस स्ट्रिंग है: 10.10.10.10/16(ग)

और मैं कि आईपी से नकाब हटाने और प्राप्त करना चाहते हैं: 10.10.10.10

यह कैसे किया जा सकता है?

+6

आप 'गठजोड़ कर सकते हैं std :: स्ट्रिंग :: substr() 'और' std :: string :: find() ' –

+0

यदि आप मूल स्ट्रिंग को नष्ट करने के ठीक हैं, तो आप 'strchr ('/') =' \ 0'' – aragaer

+0

का उपयोग कर सकते हैं, आप' memchr' समारोह, और फिर 'strcpy'। – Raj

उत्तर

12

बस स्लैश के स्थान पर एक 0 डाल

#include <string.h> /* for strchr() */ 

char address[] = "10.10.10.10/10"; 
char *p = strchr(address, '/'); 
if (!p) /* deal with error:/not present" */; 
*p = 0; 

मैं अगर यह काम करता है सी ++

+7

बर्बाद स्मृति की आवश्यकता है! इसके सभी 3 बाइट्स! – 75inchpianist

+1

@ 75inchpianist इसका मतलब क्या है? स्मृति "बर्बाद" कहां है और कैसे? –

+0

यह '* p = '\ 0' नहीं होना चाहिए;' – stedotmartin

3
char* pos = strstr(IP,"/"); //IP: the original string 
char [16]newIP; 
memcpy(newIP,IP,pos-IP); //not guarenteed to be safe, check value of pos first 
+0

मुझे खेद है लेकिन सी मुझे क्या चाहिए। मेरे टैग संपादित – Itzik984

16

का तरीका यहां बताया सी में यह करना होगा ++ (प्रश्न सी के रूप में चिह्नित किया गया था ++ जब मैं जवाब) है:

#include <string> 
#include <iostream> 

std::string process(std::string const& s) 
{ 
    std::string::size_type pos = s.find('/'); 
    if (pos != std::string::npos) 
    { 
     return s.substr(0, pos); 
    } 
    else 
    { 
     return s; 
    } 
} 

int main(){ 

    std::string s = process("10.10.10.10/16"); 
    std::cout << s; 
} 
+0

मैं वास्तव में माफी चाहता हूं, सी मुझे – Itzik984

0

उदाहरण

में पता नहीं है
char ipmask[] = "10.10.10.10/16"; 
char ip[sizeof(ipmask)]; 
char *slash; 
strcpy(ip, ipmask); 
slash = strchr(ip, '/'); 
if (slash != 0) 
    *slash = 0; 
1

मुझे लगता है कि यह सी में है इसलिए मुझे लगता है कि आपका "स्ट्रिंग" "char *" है?
तो आप एक छोटे से समारोह जो वैकल्पिक एक स्ट्रिंग और एक विशिष्ट चार पर "कट" यह हो सकता है, तो: सी में

void cutAtChar(char* str, char c) 
{ 
    //valid parameter 
    if (!str) return; 

    //find the char you want or the end of the string. 
    while (*char != '\0' && *char != c) char++; 

    //make that location the end of the string (if it wasn't already). 
    *char = '\0'; 
} 
0

उदाहरण ++

#include <iostream> 
using namespace std; 

int main() 
{ 
    std::string connectionPairs("10.0.1.11;10.0.1.13"); 
    std::size_t pos = connectionPairs.find(";"); 
    std::string origin = connectionPairs.substr(0,pos); 
    std::string destination = connectionPairs.substr(pos + 1); 
    std::cout << origin << std::endl; 
    std::cout << destination << std::endl; 
    return 0; 
}