循环读入字符遇回车结束输入(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;
}
这是代码,我的要求是输入回车后就开始执行transform函数转换,是输入回车后,而我的这个代码输入回车后没有执行,请问该怎么修改才能实现我要的功能呢?
请各位帮帮忙看看。
万分感谢!

/*一楼把源程序改得面目全非,在改动最小的前提下,其实要解决楼主的问题只要使用,cin.get代替原来的输入使之能读入回车即可,详见注释*/

#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];;
cin.get(input[i]); //使用cin的get函数即可读入回车符
count++;
if(input[i]=='\n') 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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-04
我帮你单步调试了。
当你输入的字符到10个的时候,回车后才会执行。否则你的第一个for循环不会结束!
第2个回答  2011-01-04
使用getchar方法,当输入回车时,输入结束
第3个回答  2011-01-04
用cin.get()来处理就可以了
#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++)
{
input[i]=cin.get();
count++;
if(input[i]=='\n') 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;
system("PAUSE");
return 0;
}
第4个回答  2011-01-04
问题出在:cin不能接受回车这个字符,把它改为getchar()就好了!!!如果是输入一个字符串的话,用gets().
#include <iostream>
#include <cstring>
#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 ch;
char input[10];
int i,count=0;
for(i=0;i<10;i++)
{
ch=getchar();
input[count++]=ch;
if(ch=='\n') break;
}
// cout<<count<<endl;
cout<<"原来的字符为:";
for(i=0;i<count-1;i++)
{
cout<<input[i];
}
cout<<endl;
cout<<"转换后的字符为:";
for (i=0;i<count-1;i++)
{
cout<<transform(input[i]);
}
cout<<endl;
return 0;
}
第5个回答  2011-01-04
for(int i=0;i<10;i++)
{
cin>>input[i];;
count++;
if(input[i]=='\r') break;
}
改成
char cEnter;
for(int i=0;i<10;i++)
{
cEnter = cin.get();
if(cEnter=='\n') break;
input[i] = cEnter;
count++;
cin.get();
}
相当于连按两下回车,开始执行transform函数。
相似回答