发表人信箱: [email protected]
发表人网址: http://www.research.att.com/~bs/homepage.html
如何编写简练的程序?特别是在输入数据,处理数据,然后输出结果这样的情况下。
======================================================================我常常,尤其在学习班上,遇到这样的问题:如何编写简练的程序?特别是在输入数据,处理数据,然后输出结果这样的情况下。下面是一个这样的应用代码: #include<iostream>
#include<vector>
#include<algorithm>
using namespace std; int main()
{
vector<double> v; double d;
while(cin>>d) v.push_back(d); // 读取数据并进栈
if (!cin.eof()) { // 检验是否输入结束字符
cerr << "format error\n";
return 1; // 出错返回
} cout << "read " << v.size() << " elements\n"; reverse(v.begin(),v.end());
cout << "elements in reverse order:\n";
for (int i = 0; i<v.size(); ++i) cout << v[i] << '\n'; return 0; // 成功返回
}这段代码有几个看点:这里使用了C++的ISO标准库函数。用声明命名空间为std(后面不加".h"后缀)方式调用标准库函数。如果是在Windows机器上编译这段代码,要定义为控制台应用(console application)。记住要在源程序文件末尾标明为".cpp"后缀,否则系统认为是C语言而不是C++语言。当然,main()主函数返回int值。将输入数据读到向量集(vector)中能够防止出现“内存溢出”的错误。如何将数据读进数组而又不导致发生“愚蠢”的错误,这个问题超出了对新手的要求。如果你能作到这点,你就已经不是一个新手了。如果你不相信这句话,请到我的站点参考"Learning Standard C++ as a New Language"一文,可以在我的发布目录下载这篇文章。!cin.eof()用于测试输入流的结束状态。特别用于判别是否在输入结束时跳出循环体。如果不是结束字符就表示得到错误的输入类型/格式。程序本身并不显式地管理内存和释放内存。向量能够跟踪内存使用状态。需要更多内存时,它能够分配更多的内存;超出作用域时就释放内存。因此开发者不必为向量元素使用内存的分配和释放操心。控制台输入结束时,程序随之结束。在Unix系统下,输入结束的字符是"Ctrl-D"。但对于Windows系统,这却是一个遗留的缺陷,它没有相应的结束输入的字符表达。所以程序略作改动,当输入为"end "时,程序结束: #include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std; int main()
{
vector<double> v; double d;
while(cin>>d) v.push_back(d); // 读取数据并进栈
if (!cin.eof()) { // 检验是否输入结束字符
cin.clear(); // 清空出错流
string s;
cin >> s; // 输入转换为结束字符
if (s != "end") {
cerr << "format error\n";
return 1; // 出错返回
}
} cout << "read " << v.size() << " elements\n"; reverse(v.begin(),v.end());
cout << "elements in reverse order:\n";
for (int i = 0; i<v.size(); ++i) cout << v[i] << '\n'; return 0; // 成功返回
}
发表人网址: http://www.research.att.com/~bs/homepage.html
如何编写简练的程序?特别是在输入数据,处理数据,然后输出结果这样的情况下。
======================================================================我常常,尤其在学习班上,遇到这样的问题:如何编写简练的程序?特别是在输入数据,处理数据,然后输出结果这样的情况下。下面是一个这样的应用代码: #include<iostream>
#include<vector>
#include<algorithm>
using namespace std; int main()
{
vector<double> v; double d;
while(cin>>d) v.push_back(d); // 读取数据并进栈
if (!cin.eof()) { // 检验是否输入结束字符
cerr << "format error\n";
return 1; // 出错返回
} cout << "read " << v.size() << " elements\n"; reverse(v.begin(),v.end());
cout << "elements in reverse order:\n";
for (int i = 0; i<v.size(); ++i) cout << v[i] << '\n'; return 0; // 成功返回
}这段代码有几个看点:这里使用了C++的ISO标准库函数。用声明命名空间为std(后面不加".h"后缀)方式调用标准库函数。如果是在Windows机器上编译这段代码,要定义为控制台应用(console application)。记住要在源程序文件末尾标明为".cpp"后缀,否则系统认为是C语言而不是C++语言。当然,main()主函数返回int值。将输入数据读到向量集(vector)中能够防止出现“内存溢出”的错误。如何将数据读进数组而又不导致发生“愚蠢”的错误,这个问题超出了对新手的要求。如果你能作到这点,你就已经不是一个新手了。如果你不相信这句话,请到我的站点参考"Learning Standard C++ as a New Language"一文,可以在我的发布目录下载这篇文章。!cin.eof()用于测试输入流的结束状态。特别用于判别是否在输入结束时跳出循环体。如果不是结束字符就表示得到错误的输入类型/格式。程序本身并不显式地管理内存和释放内存。向量能够跟踪内存使用状态。需要更多内存时,它能够分配更多的内存;超出作用域时就释放内存。因此开发者不必为向量元素使用内存的分配和释放操心。控制台输入结束时,程序随之结束。在Unix系统下,输入结束的字符是"Ctrl-D"。但对于Windows系统,这却是一个遗留的缺陷,它没有相应的结束输入的字符表达。所以程序略作改动,当输入为"end "时,程序结束: #include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std; int main()
{
vector<double> v; double d;
while(cin>>d) v.push_back(d); // 读取数据并进栈
if (!cin.eof()) { // 检验是否输入结束字符
cin.clear(); // 清空出错流
string s;
cin >> s; // 输入转换为结束字符
if (s != "end") {
cerr << "format error\n";
return 1; // 出错返回
}
} cout << "read " << v.size() << " elements\n"; reverse(v.begin(),v.end());
cout << "elements in reverse order:\n";
for (int i = 0; i<v.size(); ++i) cout << v[i] << '\n'; return 0; // 成功返回
}
解决方案 »
- 我用对话框配合GDI+打开图片,但是之后有很大麻烦。求解
- 急求VC++实现Bayer(raw)格式图像数据保存为BMP或JPG文件源代码!
- 一个很有意思的现象不知道为什么。。关于随机数的
- 一个C程序问题:输入一串字符,查找其中有多少个整数,并输出这些整数。
- vc中odbc加access数据库怎么保存并显示图片?
- 在调用DllMain前是不是会调用RawDllMain
- CRichEdit 如何着色
- 关于OCX中显示视频
- 关于伪对话框全屏遇到的问题:无法隐藏任务栏和右边边框
- 如何才能彻底的删除动态生成CString型的数组
- 有那位大侠能告诉我,怎样在VC++6。0里制作SETUP!不胜感激。
- 请问如何修改一个文件的图标,使之在资料管理器中显示的图标改变!
http://www.csdn.net/expert/Topicview1.asp?id=645200
http://www.csdn.net/expert/Topicview1.asp?id=645202
http://www.csdn.net/expert/Topicview1.asp?id=645199