【发布时间】:2018-04-07 05:56:23
【问题描述】:
我正在尝试将随机生成的字符的二维向量转换为 int。例如,如果字符是 'abc',那么我希望我的 int 向量是 '97,98,99' 等等。
我试着看这里,大多数情况下,人们都在询问关于 char 到 sting、string 到 char 等的问题。
这是我目前所拥有的。
#include <vector>
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int main()
{
vector<vector<char> > vec(100, vector<char>(10));
vector<vector<int> > intVec(100, vector<int>(10));
srand(time(NULL));
int intAscii = 0;
// Fill 2D vector with random chars
for(int i = 0; i < 1; i++)
{
rand_num = (rand() % 8 + 3);
for(int j = 0; j < rand_num; j++)
{
//logic here... randomly gen a char and place it in the same position, but this time in the int vector as an int.
vec.at(i).push_back((rand() % 26 + 97));
intAscii = int(vec.at(i).at(j));
intVec.at(i).push_back(intAscii);
}
// Print Contents & print out the int vector.
for(int i = 0; i < vec.size(); i++)
{
for(int j = 0; j < vec.at(i).size(); j++)
{
cout << vec.at(i).at(j);
cout << intVec.at(i).at(j);
}
}
}
我遇到的问题是,当它打印出两个向量时,chars 很好,对于 int 我得到一大堆零。这似乎不正确,因为 int(vec.at(i).at(j)) 有效,即如果 char 向量是 a 那么 int 向量将是 97 等等。
此时,我的猜测是 int 向量的语法可能是错误的。
【问题讨论】:
-
为什么你有 100 个大小为 10 的向量仍然使用 push_back()?
-
我不确定你在你的例子中要做什么,但感觉你只是走错了路。从一个空向量开始并向其中添加内容。您不需要 2 个向量,您可以很容易地将字符打印为整数。不要使用幻数,如果您的意思是“a”,请使用它。 ideone.com/Jg3yLQ
-
@RetiredNinja 对不起,我应该更清楚。我之所以拥有该大小的 char 数组是因为我必须生成一个包含 100 个单词的二维数组,该数组的列大小为 3 - 10。
-
那为什么不是字符串向量呢?这对我来说似乎更合适。 耸耸肩 ideone.com/k2uTpe