उदाहरण के लिए में एक निश्चित चार से पहले सबस्ट्रिंग जाओ, मैं इस स्ट्रिंग है: 10.10.10.10/16
(ग)
और मैं कि आईपी से नकाब हटाने और प्राप्त करना चाहते हैं: 10.10.10.10
यह कैसे किया जा सकता है?
उदाहरण के लिए में एक निश्चित चार से पहले सबस्ट्रिंग जाओ, मैं इस स्ट्रिंग है: 10.10.10.10/16
(ग)
और मैं कि आईपी से नकाब हटाने और प्राप्त करना चाहते हैं: 10.10.10.10
यह कैसे किया जा सकता है?
बस स्लैश के स्थान पर एक 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;
मैं अगर यह काम करता है सी ++
बर्बाद स्मृति की आवश्यकता है! इसके सभी 3 बाइट्स! – 75inchpianist
@ 75inchpianist इसका मतलब क्या है? स्मृति "बर्बाद" कहां है और कैसे? –
यह '* p = '\ 0' नहीं होना चाहिए;' – stedotmartin
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
मुझे खेद है लेकिन सी मुझे क्या चाहिए। मेरे टैग संपादित – Itzik984
का तरीका यहां बताया सी में यह करना होगा ++ (प्रश्न सी के रूप में चिह्नित किया गया था ++ जब मैं जवाब) है:
#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;
}
मैं वास्तव में माफी चाहता हूं, सी मुझे – Itzik984
उदाहरण c
में पता नहीं हैchar ipmask[] = "10.10.10.10/16";
char ip[sizeof(ipmask)];
char *slash;
strcpy(ip, ipmask);
slash = strchr(ip, '/');
if (slash != 0)
*slash = 0;
मुझे लगता है कि यह सी में है इसलिए मुझे लगता है कि आपका "स्ट्रिंग" "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';
}
उदाहरण ++
#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;
}
आप 'गठजोड़ कर सकते हैं std :: स्ट्रिंग :: substr() 'और' std :: string :: find() ' –
यदि आप मूल स्ट्रिंग को नष्ट करने के ठीक हैं, तो आप 'strchr ('/') =' \ 0'' – aragaer
का उपयोग कर सकते हैं, आप' memchr' समारोह, और फिर 'strcpy'। – Raj