我正在尝试用C++解析一个简单的字符串.我知道字符串包含一些带冒号的文本,紧接着是一个空格,然后是一个数字.我想只提取字符串的数字部分.我不能只是在空间上进行标记(使用sstream和<<),因为冒号前面的文本可能有也可能没有空格.
一些示例字符串可能是:
总磁盘空间:9852465
可用磁盘空间:6243863
部门:4095
我想使用标准库,但如果您有其他解决方案,您也可以发布,因为其他有相同问题的人可能希望看到不同的解决方案.
Bri*_*ndy 14
std::string strInput = "Total disk space: 9852465";
std::string strNumber = "0";
size_t iIndex = strInput.rfind(": ");
if(iIndex != std::string::npos && strInput.length() >= 2)
{
strNumber = strInput.substr(iIndex + 2, strInput.length() - iIndex - 2)
}
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这是C中的简单解决方案:
int value;
if(sscanf(mystring.c_str(), "%*[^:]:%d", &value) == 1)
// parsing succeeded
else
// parsing failed
Run Code Online (Sandbox Code Playgroud)
说明:%*[^:]说要读入不是冒号的许多可能的字符,并且*抑制赋值.然后,在冒号和任何插入的空格之后读入整数.
| 归档时间: |
|
| 查看次数: |
20456 次 |
| 最近记录: |