2017-10-26 11 views
0

임의로 생성 된 char의 2D 벡터를 int로 변환하려고합니다. 예를 들어 chars가 'abc'인 경우 int 벡터가 '97, 98,99 '등이됩니다.(C++) 2D 벡터 Char에서 Int

여기에서 살펴 보았는데 대부분 사람들은 숯에 대해 묻습니다. 문자열 등.

이것은 내가 지금까지 가지고있는 것이다.

#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); 
     } 
    } 
} 

내가으로 실행하고 문제는 두 벡터를 출력 할 때 인터넷 용 I이 제로의 전체 무리를 얻고, 문자가 좋은 것입니다. int(vec.at(i).at(j))이 작동하기 때문에 char 벡터가 a 인 경우 int 벡터가 97이되는 등 올바르게 작동하지 않습니다. 이 시점에서

, 내 생각 엔

이 도움을 주셔서 감사합니다 ... INT 벡터의 구문이 잘못 될 수 있다는 것입니다!

+0

왜 크기가 100 인 벡터를 가지고 있고 여전히 push_back()을 사용하고 있습니까? –

+0

나는 당신이 당신의 예에서 어떤 일을할지 확신하지 못한다.하지만 당신이 잘못한 것처럼 느껴진다. 빈 벡터로 시작하고 그 위에 물건을 추가하십시오. 벡터가 2 개 필요하지 않습니다. 정수로 문자를 매우 쉽게 인쇄 할 수 있습니다. 'a'라는 뜻이라면 마법 번호를 사용하지 마십시오. https://ideone.com/Jg3yLQ –

+0

@RetiredNinja 미안하지만 분명히해야합니다. 그 이유는 내가 char 배열을 가지고 있기 때문입니다. 왜냐하면 3 - 10의 열 크기와 다른 100 단어의 2 차원 배열을 생성해야하기 때문입니다. – h7779

답변

0

이 작업을 시도 할 수 있습니다 :

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

또한, 요소에 액세스하는 것이 좋아, 대신에와 push_back의 인덱스를 사용하는 것이 더 좋을 수 :

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

이미 할당하기 때문에이 작동합니다 아주 처음에 벡터에 대 한 메모리입니다.