做一些简单的练习,我现在对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”,我得到的只是一堆随机符号(我猜是从指针地址中提取的字符)