2014-01-15 2 views
0

"HappyDays"와 같은 문자열이 있습니다.벡터 요소를 char 변수에 할당

처음에는이 문자열을 문자 배열로 변환했습니다. 다음으로 각 char 배열 요소를 char 변수에 할당하고 다음과 같이 각 문자가 ASCII 문자인지 확인합니다.

   input character <127 && input character >=0 

이제 문자 배열을 만드는 대신 문자 벡터를 만듭니다. 이제 vector.at (counter)를 사용하여 벡터의 특정 요소에 액세스하려는 것과 동일한 작업을 수행하려고합니다. 이 후 char 변수에이 값을 할당하고 위와 같은 ASCII 검사를 지정하려고합니다. 하지만 이렇게하면 많은 오류가 발생합니다.

벡터 요소 값을 char 변수에 할당하는 올바른 방법입니까? 내가 뭔가 잘못하고 있는거야?

+2

같은 코드 모양을 무엇 당신은 벡터를 사용하고 있습니까? 정확한 오류 메시지는 무엇입니까? – Krease

+1

기술적으로 ASCII는 127까지만 올라갑니다. –

+0

ASCII를 0에서 127로 변경했다고 생각했습니다. – juanchopanza

답변

1

당신은 (테스트하지)이 같은 요구 :

std::string str("HappyDays"); 
std::vector<char> vec(str.begin(), str.end()); 
for (int i = 0; i < vec.size(); ++i) 
{ 
    char c = vec.at(i); 
    if (c < 127 && c >=0) 
    { 
    std::cout << "character " << c << " is ASCII according to OP\n" 
    } 
} 

하지만이 또한 작동합니다 반복자와

std::string str("HappyDays"); 
for (auto c: str) 
{ 
    if (0 <= c && c <= 127) 
    { 
    std::cout << "character " << c << " is ASCII\n" 
    } 
} 

:

std::string str("HappyDays"); 
for (auto it = str.begin(); it != str.end(); ++it) 
{ 
    char c = *it; 
    if (0 <= c && c <= 127) 
    { 
    std::cout << "character " << c << " is ASCII\n" 
    } 
} 
+0

예, 맞습니다. for 루프에서는 반복기를 사용하고 벡터의 특정 요소에 액세스하려고합니다. 그것을 어떻게 성취 할 수 있습니까? 이 반복 방식은 0,1,2 등의 카운터 값을 제공하지 않으므로? (배열 요소를 액세스 할 때 indencies의 값과 비슷 함) – Xara

+0

반복자를 사용하여 예제를 추가했습니다 (벡터와 동일) – stefaanv