String Stream in C++ 解析单词和数字字符串
String Stream in C++ to parse string of words & numbers
我有这样的字符串:'123plus43times7'
数字后面跟着字典里的单词。
我知道我可以使用>>
运算符提取int/数字:
StringStream >> number
我可以得到号码。然而,Stream中仍然有数字。当数字的长度未知时,我该如何删除数字,还是应该找出数字的长度,然后使用str.substr()创建一个新的String Stream?任何其他使用C++STL字符串和SStream的更好方法都将不胜感激。
您可以在文本和数字之间插入空格,然后使用std::stringstream
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
int main()
{
std::string s = "123plus43times7";
for (size_t i = 0; i < (s.size() -1 ); i++)
{
if (std::isalpha(s[i]) != std::isalpha(s[i + 1]))
{
i++;
s.insert(i, " ");
}
}
std::stringstream ss(s);
while (ss >> s)
std::cout << s << "n";
return 0;
}
这里有一种方法可以实现
string as = "123plus43times7";
for (int i = 0; i < as.length(); ++i)
{
if (isalpha(as[i]))
as[i] = ' ';
}
stringstream ss(as);
int anum;
while (ss >> anum)
{
cout << "n" << anum;
}
相关文章:
- 如何在 getline 中删除/忽略超过特定数字的字符?
- 不反转数字的字符反转
- 如果是数字或字符,请检查输入
- 编写一个程序,输入整数 n 并打印该数字的字符数(符号除外)
- 识别数字的字符
- 遍历 std::string 时如何获取没有数字的字符?
- 2命令行参数中的数字数字仅被视为一个数字
- 如何验证输入仅是数字数字
- 为什么 cin.fail() 在输入数字后跟字符时不返回 false?
- 测试字符串是数字还是字符
- 如果字符串中没有空格,如何解析带有数字和字符的字符串并分隔数字和字符
- RSA数字和字符值算法
- 正则表达式:仅限数字 + 字母数字 + 特殊字符
- 检查字符串的每个元素中的数字或字符
- 调用函数时,是否可以在被调用函数的名称后面附加一个数字或字符
- c++ cin.ignore忽略空格、数字和字符来测试回文
- 读入后面跟着数字的字符
- 使用数字和字符操作符创建表达式
- c++计数数字和字符
- 我的程序应该摆脱不是数字的字符,但不能完全工作,关于我做错了什么有什么想法吗?