【问题标题】:2D Vectors Char to Int二维向量 Char 到 Int
【发布时间】: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

标签: c++ vector char int


【解决方案1】:

你可以试试这个:

intAscii = (int)vec.at(i).at(j);

此外,要访问元素,最好使用索引而不是 push_back,例如:

intVec.at(i).at(j) = intAscii;

这应该可以工作,因为您已经在一开始就为向量分配了内存。

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多