给定一个由单个字符后跟一个数字(一个或两个数字)组成的字符串,我想将其拆分为一个字符和一个整数。最简单的方法是什么?
到目前为止我的想法:
我可以像这样轻松抓住角色:
string mystring = "A10";
char mychar = mystring[0];
困难的部分似乎抓住了后面的一位或两位数字。
答案 0 :(得分:17)
#include <sstream>
char c;
int i;
std::istringstream ss("A10");
ss >> c >> i;//First reads char, then number.
//Number can have any number of digits.
//So your J1 or G7 will work either.
答案 1 :(得分:4)
您可以使用operator[],substr,c_str和atoi作为:
string s = "A10";
char c = s[0]; // c is now 'A'
int n = atoi((s.substr(1,2)).c_str()); // n is now 10
修改强>
如果s="A1"
,上述内容也会有效。这是因为如果2nd
的{{1}}参数使得子字符串跨越字符串内容的末尾,则只使用字符串结尾之前的那些字符。 < / p>
答案 2 :(得分:2)
sscanf()
std::string s = "A10";
int i;
char c;
sscanf(s.c_str(), "%c%d", &c, &i);
/* c and i now contain A and 10 */
这更像是一种“C方式”的做事方式,但不会少。
这是一个更“C ++方式”:
std::string s = "A10";
std::cout << *s.begin() << s.substr(1, s.size()) << std::endl;
/* prints A10 */