#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().

评论