//进制转换:
//c语言的进制转换及字符串分割提取用sprintf和sscanf
/*
我发现std::getline()是最简单的拆分字符串的方法,这个方法有一个可选参数意味着它不只可以按行拆分字符串,如下例子
#include <sstream>
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> strings;
std::stringstream f("denmark;sweden;india;us");
std::string s;
while (std::getline(f, s, ';')) {
std::cout << s << std::endl;
strings.push_back(s);
}
}
*/
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
int a;
string s;
stringstream ss;
//10进制转16进制
ss<<hex<<13;
ss>>s;
ss.str("");ss.clear();
//16进制转10进制
ss<<hex<<"0x1f";
ss>>a;
system("pause");
return 0;
}
//字符串分割
int main()
{
string s1,s2;
stringstream ss;
ss<<"http://www.bbc.com";
getline(ss,s1,':');
ss.ignore(256,'/');
ss.ignore(256,'/');//or: ss.ignore(2);
getline(ss,s2,'.');
getline(ss,s2,'.');
system("pause");
return 0;
}
//例如:ip地址取值、转换
int main()
{
string s="192.168.1.35";
string s1;
int ip1,ip2,ip3,ip4,ip5,ip6,ip7,ip8;
char dot;
stringstream ss;
ss<<s;
ss>>ip1>>dot>>ip2>>dot>>ip3>>dot>>ip4;
//此时ip1=192,ip2=168,ip3=1,ip4=35
ss.str("");ss.clear();
ss<<hex<<ip1<<'.'<<hex<<ip2<<'.'<<hex<<ip3<<'.'<<hex<<ip4;
ss>>s1;
//此时s1=c0.a8.1.23
ss.str("");ss.clear();
ss<<hex<<s1;
ss>>ip5>>dot>>ip6>>dot>>ip7>>dot>>ip8;
//此时ip5=192,ip6=168,ip7=1,ip8=35
system("pause");
return 0;
}
进制转换及字符串分割提取
最新推荐文章于 2022-06-06 11:58:05 发布