sscanfは文字列分離、抽出を行う.stringと数値の相互変換
1586 ワード
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 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
#include
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;
}