做一些簡單的練習,我現在對iostream和指針有一個很大的懷疑。傳遞char指針到cin和cin.get()
這是2頁稍有不同的文件,我做(他們都工作):
文件1接收輸入爲「我的名字是#馬」和cout打印「Mynameis」
int main(){
using namespace std;
char* ch=new char[256];
int count=0;
cout <<"Enter chars, # to quit:\n";
cin >> ch;
while(*ch!='#'){
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
return 0;
}
文件2作爲前接收相同的輸入,但此時COUT打印的空間太:
int main(){
using namespace std;
char* ch=new char[256];
int count=0;
cout <<"Enter chars, # to quit:\n";
cin.get(*ch);
while(*ch!='#'){
cout << *ch;
++count;
cin.get(*ch);
}
cout << endl << count << " characters read\n";
return 0;
}
我不明白的是,爲什麼在第8行的第二個文件我必須寫「COUT < < * ch「而不是」cout < < ch「,如第一個那樣。其實,如果我在文件2中使用「cout < < ch」,我得到的只是一堆隨機符號(我猜是從指針地址中提取的字符)