2010-07-28 45 views
1

我是C++的新手,我正在嘗試做一些非常基本的工作。如何將整數值轉換爲C++中的特定ascii字符

我在C++中有一個小循環,它只是顯示一個數字序列,我想將這些數字轉換爲特定的ASCII字符。事情是這樣的:

for (int k = 0; k < 16; k++) { 
     display(65+k); 
    } 

而結果應該是這樣的:

ABCDEFGH ...等

任何想法?

謝謝!

回答

0

這將是

#include <iostream> 
int main() { 
for (int k = 0; k < 16; k++) { 
     std::cout.put(65+k); 
    } 
} 

基於澄清C++

+2

一個改進將是用'A'代替65. – 2010-07-28 21:48:53

+0

不是真的。其實我們並不能保證'A'後面的代碼完全是字母。如果在AS/400上運行該程序,則該程序將產生一個亂碼文件,供任何人以ASCII格式讀取。 65是* correcter *而不是'A',但'A'對於沒有記住ASCII表的鬆散^ H^H^H^H^H的人更好。 – 2010-07-28 22:14:33

+0

Luther是正確的,該解決方案將在任何至少具有7位寬的流的環境中可移植地生成ASCII字符(而C char類型必須至少爲8位,在寫入磁盤時不會阻止縮小轉換或標準輸出),而不管環境是否使用ASCII作爲其原生格式。 – 2010-07-29 13:19:10

2

編輯: 從錯誤信息判斷display需要C風格串。你可以建立一個這樣的:

for (int k = 0; k < 16; k++) { 
    char str[2] = { 65 + k }; // Implicitly add the terminating null. 
    display(str); 
} 
+0

這是一個不正確的解決方案。 OP希望輸出* ASCII *字符,但'A'的值取決於主機編碼。如果你在AS/400上編譯它,那麼它會發送0xc2 0xc3 0xc4到輸出流。 – 2010-07-28 22:05:23

+0

@Luther OP特別要求結果是字符。我不明白在這樣的系統上'std :: cout'如何不會在顯示器上將''A'+ 1'轉換爲''B'',而不管主機實際使用什麼數字表示。 – 2010-07-28 23:08:24

+0

cout不知道如何在顯示屏上顯示'A'。它只知道如何將字符代碼發送到您的顯示器(或文件),然後直到顯示器解釋代碼並顯示特定代碼的'A'。如果程序和顯示不符合「A」的代碼,則說明您有問題。 – 2010-07-28 23:20:24