将整数与字符串分开
Separate the integers from a string
我有一个解压缩文本文件的程序。如果输入为4A,则应打印"AAAA"。我的问题是当我尝试分离字符串中包含的整数时,因为在程序读取 3 个数字后,它似乎进入了一个无限循环。这是我的代码:
while (getline(cin, line)){
for(i = 0; i<line.length(); i++) {
char * x = &line.at(i);
if(isdigit(line.at(i))){
counter = atoi (x);
}
...............
**Do Something**
我试图在获得值后立即打印 char x,但正如我在读取 3 个数字后所说,它进入了一个无限循环。请帮忙
提前谢谢。
您在内部第二个 for 循环中使用变量 i(重置 i 的值),因此是无限循环。
这是一个没有手写循环的版本,使用正则表达式和字符串视图:
static const std::regex expr{ "(\d)*[a-zA-Z]" }; // zero or more digits + letter
std::string uncompress(std::string_view const& input)
{
char what{ ' ' };
unsigned long rep{ 1 };
if (std::regex_match(input.begin(), input.end(), expr))
{
char *end = const_cast<char*>(&input.back()) - 1;
rep = 1 == input.size() ? 1 : strtoul(input.data(), &end, 10);
what = input.back();
}
return std::string(rep, what);
}
在演示中,微小的修改允许在搜索输入时调用它。还展示了输入清理。
相关文章:
- C 字符串返回字符串的整数/双精度/长整型值
- 尝试将字符串/字符转换为整数会产生意外结果
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 如何从C++中的格式化字符串派生整数?
- 如何使用C++将字符串中的字符转换为整数变量
- 向量值(字符串和整数)求和C++
- 如何从字符串C++读取多个整数
- 如何将整数字符串转换为整数的二维向量?
- 输入验证以筛选出字符、字符串和一系列整数
- 有没有办法在C++中将字符串和整数相乘?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- C++字符串大小减去整数不是预期值,为什么?
- 使用字符串流读取整数并将它们相加
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- C++ runtime_exception字符串 + 整数
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- 使用next_permutation函数后如何保存字符串/整数
- 使用fstream和sstream一起从文件中分离字符串/整数