例如,我有这个字符串:10.10.10.10/16
我想从该IP中删除掩码并获取:10.10.10.10
怎么可以这样做?
答案 0 :(得分:17)
以下是如何在C ++中执行此操作(当我回答时,问题被标记为C ++):
#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;
}
答案 1 :(得分:16)
只需在斜线的位置加上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;
我不知道这是否适用于C ++
答案 2 :(得分: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
答案 3 :(得分:1)
我看到这是在C中所以我猜你的&#34;字符串&#34;是&#34; char *&#34;? 如果是这样,你可以有一个小的功能,交替一个字符串和&#34; cut&#34;它在特定的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';
}
答案 4 :(得分: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;
答案 5 :(得分:0)
C ++中的示例
#include <iostream>
using namespace std;
int main()
{
std::string addrWithMask("10.0.1.11/10");
std::size_t pos = addrWithMask.find("/");
std::string addr = addrWithMask.substr(0,pos);
std::cout << addr << std::endl;
return 0;
}