2014-01-15 52 views
0

我有一個像這樣的字符串「HappyDays」。將向量元素賦值給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等計數器值嗎? (就像訪問數組元素時的indcies的值) – Xara

+0

我添加了一個迭代器的例子(向量相同) – stefaanv