2013-09-24 115 views
2

我願意做的是我想將數組的所有值轉換爲它們各自的ASCII值,然後將它們存儲在另一個數組中。我的代碼能夠將字符值轉換爲ASCII碼,但無法將它們存儲在另一個數組中。請幫助我。無法在c + +中存儲數組值

#include <iostream> 
#include <string> 
using namespace std; 
int main(){ 
    char ass[10]; 
    char name[]= "Chaitanya"; 
    int size=sizeof(name); 
    for(int i=0; i<size; i++){ 
     int p=name[i]; 
     cout<<p<<"\n"; 
     for(int j=0; j<size; j++){ 
      ass[j]=p; 
      } 
     } 
    return 0; 
    } 

當我嘗試運行這個程序,我得到了以下錯誤消息:

warning: variable ‘ass’ set but not used [-Wunused-but-set-variable] 

謝謝! 我得到了前一個。但是如果我想再次打印存儲在屁股中的所有元素,該怎麼辦?我使用下面的代碼,它什麼都不做。我沒有收到任何錯誤。

#include <iostream> 
#include <string> 
using namespace std; 
int main(){ 
    char ass[10]; 
    char name[]= "Chaitanya"; 
    int size=sizeof(name); 
    for(int i=0; i<size; i++){ 
     int p=name[i]; 
     cout<<p<<"\n"; 
     for(int j=0; j<size; j++){ 
      ass[j]=p; 
      } 
     } 
    for(int q=0; q<size; q++){ 
     cout<<ass[q]; 
     } 
    return 0; 
    } 
+0

「將字符值轉換爲ASCII」 - 這並不意味着什麼。字符值已經是數字代碼,通常被解釋爲ASCII的超集。其他一切都是介紹的問題,即是否通過在表中查找字形來顯示數字代碼(將其視爲字符)或將其轉換爲數字的字符串表示形式(將其視爲整數)。 –

回答

1

你的警告只是告訴你,你沒有使用變量ass。這不是一個錯誤,但是你在你的代碼中的問題:

int size = sizeof(name); 

for (int i = 0; i < size; i++) 
{ 
    int p = name[i]; 
    for (int j = 0; j < size; j++) 
    { 
     ass[j] = p; 
    } 
} 

第二個for循環將直接覆蓋每一個字符ass與單個字符p。無需嵌套for循環,只需指定主循環中的字符即可:

for (int i = 0; i < size; i++) 
{ 
    int p = name[i]; 
    ass[i] = p; 
} 

此外,可以通過標準庫函數來實現此功能。例如:

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string ass; 
    std::string name = "Chaitanya"; 

    for (auto a : name) 
    { 
     std::cout << static_cast<int>(a); 
    } 

    ass = name; 
    std::cout << ass; // "Chaitanya" 
+0

感謝您的建議。我認爲覆蓋是一個好主意,而不是運行嵌套循環。豎起大拇指給你 – Chaitanya

2

您的警告不是失敗。它只是指出,一旦你存儲它,你永遠不會使用它!

+1

更確切地說,你不會認爲「......屁股」中的值。 – Thomas

+0

但是這不會打印存儲在ass [0]中的值。我想再次打印存儲在屁股中的所有元素,但不起作用。 – Chaitanya

+0

您發佈的代碼沒有嘗試再次打印出來。把整個代碼放進去然後我們看看! – noelicus

1

該警告是正確的,您只設置值ass您不使用之後設置的值。如果添加比方說,一個cout循環之後的警告會消失:

std::cout << ass[0] << std::endl ; 

我也,不認爲你需要第二次內部循環,如果你想打印出來,你可以添加ass每個元素這是你設置後。因此,修復和補充打印出看起來是這樣的:

for(int i=0; i<size; i++) 
{ 
    int p=name[i]; 
    cout<<p<<"\n"; 

    ass[i]=p; 
    std::cout << ass[i] << std::endl ;   
} 
+0

但是這不會打印存儲在ass [0]中的值。我想再次打印存儲在屁股中的所有元素,但不起作用。 – Chaitanya

+0

@ChaitanyaChoudhary增加了一些細節 –

1

警告:變量「屁股」設置,但不使用[-Wunused,但設置變量]

這只是警告說你已經設置了變量ass,但是你從不使用它。這完全不是一個錯誤。

舉個例子,嘗試輸出值這個數組和警告將消失

std::cout << ass[0] << std::endl; 

有此警告在這裏一小部分:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html