【发布时间】:2017-09-29 12:44:29
【问题描述】:
我的大学作业需要帮助。我还是新手。
基本上我正在做一个行程编码,我不知道如何在计数器后面添加字母:
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
void error(std::string str)
{
throw std::runtime_error(str);
}
int main()
{ int counter = 1;
std::string id;
std::vector<int> v;
std::cout << "Enter the data to be compressed: ";
std::cin >> id;
try
{ for(int i = 0; i < id.size(); i++)
{
if(std::isdigit(id[i]))
error("invalid input");
}
std::cout << "The compressed data is: ";
for(int i = 0; i < id.size(); i++)
{
if(id[i] == id[i+1])
{
counter++;
}
else if(id[i]!= id[i+1])
{
v.push_back(counter);
v.push_back(id[i]);
counter=1;
}
}
for(int j = 0; j < v.size(); j++)
std::cout << v[j];
}
catch(std::runtime_error& str)
{
std::cerr << "error: " << str.what() << std::endl;
return 1;
}
return 0;
}
例如,如果我输入 aaabbb,probram 应该输出 3a3b。问题是它输出 397398 97 和 98 是 a 和 b 的 ascii 代码。 我不知道如何把字母放在柜台后面,让它们在同一个向量中。
【问题讨论】:
-
听起来你需要一个
class来封装构成一大块编码数据(一个数量和一个字母)的两条条信息。 -
问题是我们的课还是没学好,不知道怎么学好
-
听起来像是一个并行的“数组”问题
-
然后将所有内容存储为
std::string? -
@czarczar 您必须使用
to_string将int转换为`strign`。