利用C中的sscanf函数可以分离字符串,甚至提取字符串中的数字。
当字符串的字符集较小时可考虑map,如下例:
C++方法可使用ostringstream/istringstream :
int main()
{
char s[100];
int a;
sscanf("ab 123pc", "%s %dpc", s, &a);
cout << s << ' ' << a << endl; //ab 123
}
当字符串的字符集较小时可考虑map,如下例:
//map 实现字符串字符分离
int main()
{
map<char, int> m;
// m['0'] = 0;
// m['1'] = 1;
// m['2'] = 2;
// m['3'] = 3;
// m['4'] = 4;
// m['5'] = 5;
// m['6'] = 6;
// m['7'] = 7;
// m['8'] = 8;
// m['9'] = 9;
// ||
for (int i = 0; i < 10; ++i)
m['0' + i] = i;
string num = "75326";
int sum = 0;
for (size_t i = 0; i < num.size(); ++i)
sum += m[num[i]];
cout << "sum = " << sum << endl;
return 0;
}
C++方法可使用ostringstream/istringstream :
#include <sstream>
#include <iostream>
using namespace std;
string toString(double x)
{
ostringstream oss;
if (oss << x)
return oss.str();
return "error"; //if error
}
double fromString(const string &str)
{
istringstream iss(str);
double rlt;
if (iss >> rlt)
return rlt;
return 0.0; //if error
}
int main()
{
string str = toString(123.45);
cout << str + 'f' << ' ' << fromString(str) + 3.5 << endl;//123.45f 126.95
return 0;
}