正文

关于用fstream或cin输入数据的问题.2005-08-30 18:20:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4266.html

分享到:

#include <iostream.h>
#include <fstream.h>
int main()
{
char s[25];
ofstream f1("data.txt");
f1<<"C++ Programing";
f1.close();
ifstream f2("data.txt");
f2>>s;
cout<<s<<endl;
f2.close();
return 0;
}

前几天有网友问了上面程序输出什么的时候,我看了一下就说是C++ Programing
但在VC++下测试,结果不对,结果只是C++.
考虑了很久,得出结论:用C++的文件流或cin输入字符串数据时候,一遇到空格程序就认为你已经完成了输入了.而把空格后面的数据作为后面的数据.
你可以测试下面的程序.
int main()
{
char s[25];
cin>>s;
cout<<s<<endl;
}
输入数据:C++ Programing
结果是不是:C++?
所以说用ofstream或cin不可以把有空格的字符串赋给s.

如果有一个程序的确想把C++ Programing赋给s怎么办?
1.首先我们可能会想到scanf()
int main()
{
char s[25];
scanf("%s",s);
printf("%s\n",s);
}

输入数据:C++ Programing
结果很失望还是:C++?

2.gets()
int main()
{
char s[25];
gets(s);
printf("%s\n",s);
}
输入数据:C++ Programing
结果是:  C++ Programing


3.cin.getline()经测试也可以.
int main()
{
char s[25];
cin.getline(s);
cout<<s<<endl;
}
输入数据:C++ Programing
结果是:  C++ Programing

总结:所以如果要把空格的字符串赋给字符串变量要用gets()或cin.getline().

阅读(3271) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册