我是C++的新手,我正在嘗試做一些非常基本的工作。如何將整數值轉換爲C++中的特定ascii字符
我在C++中有一個小循環,它只是顯示一個數字序列,我想將這些數字轉換爲特定的ASCII字符。事情是這樣的:
for (int k = 0; k < 16; k++) {
display(65+k);
}
而結果應該是這樣的:
ABCDEFGH ...等
任何想法?
謝謝!
我是C++的新手,我正在嘗試做一些非常基本的工作。如何將整數值轉換爲C++中的特定ascii字符
我在C++中有一個小循環,它只是顯示一個數字序列,我想將這些數字轉換爲特定的ASCII字符。事情是這樣的:
for (int k = 0; k < 16; k++) {
display(65+k);
}
而結果應該是這樣的:
ABCDEFGH ...等
任何想法?
謝謝!
這將是
#include <iostream>
int main() {
for (int k = 0; k < 16; k++) {
std::cout.put(65+k);
}
}
基於澄清C++
編輯: 從錯誤信息判斷display
需要C風格串。你可以建立一個這樣的:
for (int k = 0; k < 16; k++) {
char str[2] = { 65 + k }; // Implicitly add the terminating null.
display(str);
}
這是一個不正確的解決方案。 OP希望輸出* ASCII *字符,但'A'的值取決於主機編碼。如果你在AS/400上編譯它,那麼它會發送0xc2 0xc3 0xc4到輸出流。 – 2010-07-28 22:05:23
@Luther OP特別要求結果是字符。我不明白在這樣的系統上'std :: cout'如何不會在顯示器上將''A'+ 1'轉換爲''B'',而不管主機實際使用什麼數字表示。 – 2010-07-28 23:08:24
cout不知道如何在顯示屏上顯示'A'。它只知道如何將字符代碼發送到您的顯示器(或文件),然後直到顯示器解釋代碼並顯示特定代碼的'A'。如果程序和顯示不符合「A」的代碼,則說明您有問題。 – 2010-07-28 23:20:24
一個改進將是用'A'代替65. – 2010-07-28 21:48:53
不是真的。其實我們並不能保證'A'後面的代碼完全是字母。如果在AS/400上運行該程序,則該程序將產生一個亂碼文件,供任何人以ASCII格式讀取。 65是* correcter *而不是'A',但'A'對於沒有記住ASCII表的鬆散^ H^H^H^H^H的人更好。 – 2010-07-28 22:14:33
Luther是正確的,該解決方案將在任何至少具有7位寬的流的環境中可移植地生成ASCII字符(而C char類型必須至少爲8位,在寫入磁盤時不會阻止縮小轉換或標準輸出),而不管環境是否使用ASCII作爲其原生格式。 – 2010-07-29 13:19:10