sscanf進行字串分離、提取。以及string與數值的相互轉換
阿新 • • 發佈:2019-01-30
利用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; }