如何加入向量< int>到C 中的单个INT
How to join a vector<int> to a single int in C++?
如何将int的向量转换为c 中的单个int?
vector<int>myints = {3, 55, 2, 7, 8}
预期答案:355278
这是一种快速而肮脏的方式:
using namespace std;
vector<int> myints = {3, 55, 2, 7, 8};
stringstream stream;
for(const auto &i : myints)
{
stream << i;
}
int value = stoi(stream.str());
这是一种无需字符串的方法:
using namespace std;
vector<int> myints = {3, 55, 2, 7, 8};
int value = 0;
for(auto i : myints)
{
int number = i;
do
{
value *= 10;
i /= 10;
}while(i != 0);
value += number;
}
cout << value << endl;
i /= 10
是此处的关键位,因为它根据当前数字中的数字数来缩放数字,i
使用<string>
库和+=
操作员您可以在ints的向量上迭代,将每个数字施放为字符串并打印出结果:
#include <vector>
#include <iostream>
#include <string>
using namespace std;
int main() {
vector <int> myints = {3, 55, 2, -1, 7, 8};
string s = "";
for(int i : myints){
s += to_string(i);
}
cout << s; //prints 3552-178
}
这应该完成工作。请注意,int
可能不足以处理数字的数量。
#include <vector>
#include <sstream>
int vectorToSingleInt(const std::vector<int> &myints)
{
std::stringstream stringStream;
for (int &i : myints)
stringStream << i;
int output = 0;
stringStream >> output;
return output;
}
诀窍是您需要弄清每个数字包含多少位。您可以使用<cmath>
中的log10
进行此操作。您可以通过pow(10, x)
移动总数,其中x
是您要添加的数字数:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
vector<int>myints = {3, 55, 2, 7, 8};
int total = 0;
for (auto it = myints.begin(); it != myints.end(); ++it) {
int x = int(log10(*it)) + 1;
total = total * pow(10, x) + *it;
}
cout << total << endl;
return 0;
}
输出为355278
,如预期的。
这是一个IDEONE链接。
相关文章:
- 将单个未唱的 int 发送到 VBO
- 是否需要动态分配单个 int?
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 从字符串中提取单个字符并将其转换为 int
- 如何与C 中INT的单个数字一起工作
- 如何将char表中的单个炭转换为int
- 在向量中存储模板化对象(在<int><double>单个向量中存储类、类)
- 如何在单个变量中同时存储 int 或字符串,而不会丢失它们的类型
- 如何加入向量&lt; int&gt;到C 中的单个INT
- C 使用单个生成器从多个范围内提升随机INT
- 将一个int数组转换为单个int
- 如何检查指针是否指向数组或单个int或char
- 如何使操作符[]返回对unsigned int中单个位的引用
- gcc是否将uint8_t转换为单个值的int ?
- 如何动态分配单个int[10]对象
- 与MPI-2单向通信同步单个int值的问题
- 打开c++ TXT文件并将单个数字读入int数组
- Qt:将多个输入部件与valueChanged(int)信号连接到单个插槽
- 如何检查单个字符串输入的部分是int还是char
- 将char数组转换为单个int