循环读入字符遇回车结束输入(C++/VS2005)

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

char transform(char letter)
{
if(letter>='a'&&letter<='z')
{
letter-=32;
}

else if(letter>='A'&&letter<='Z')
{
letter+=32;
}

return letter;
}
int main()
{
char input[10];
int count=0;
for(int i=0;i<10;i++)
{
cin>>input[i];;
count++;
if(input[i]=='\r') break;
}
cout<<"原来的字符为:";
for(int i=0;i<count-1;i++)
{
cout<<input[i];
}
cout<<endl;
cout<<"转换后的字符为:";
for (int i=0;i<count-1;i++)
{
cout<<transform(input[i]);
}
cout<<endl;
return 0;
}
这是代码,可是不是我的要求,我输入回车后并没有结束输入,请问是什么问题,还有,我这样写是不是写复杂了?有没有什么简单的方法?
早就把\r改成\n试过了,没有效果啊!

1. 现在输入回车后没有结束。应该是如“雷震八方”网友所说,将\r 改成 \n
2. 更简单的方法可以直接用getline得到一个字符串,然后挨个处理每个字符就可以了。当然,不知道你这里的10个字符的限制是否一定要,如果不超过10个字符的话用getline反而不好了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-31
if(input[i]=='\r') break;
\r 换成\n 试试
第2个回答  2010-12-31
对于循环次数不定 最好用 while 循环
如果循环次数已知 可以用for
相似回答