编程过程中遇到的问题!

来源:百度知道 编辑:UC知道 时间:2024/05/02 10:44:04
我在DEV-CPP下编了一个小程序,该程序能够正常运行,可是该程序在接受用户输入的信息时只能接受一位字符,当用户输入信息后他能自动创建如:Goods,Offer,Order这三个文件夹,但是我想的是用户输入后,并保存在该文件夹中,而且在提取文件夹中的数据时能够依照某一格式规则的输出。该程序还有许多不完善的地方,所以请那位高手能够帮我修改一下该程序。谢谢,由于字数限制,所以只能贴上部分代码!#include<iostream>
#include<fstream>
using namespace std;
class Order
{
public:
char orderid[4];
char orderdate[10];
int ordermeasure[10];
void get()
{
while(1)
{
char c;
cout<<endl<<"--------------------------------------------------------"<<endl;
cout<<endl<<"Enter the orderid :";
cin>>orderid[4];
cout<<"Enter the orderdate :";
cin>>orderdate[10];
cout<<"Enter the ordermeasure :";
cin>>ordermeasure[10];
cout<<endl<<"------------------------------------------

cin>>orderid[4];
cout<<"Enter the orderdate :";
cin>>orderdate[10];
cout<<"Enter the ordermeasure :";
cin>>ordermeasure[10];
.....

orderid是个字符数组,所以orderid[4]是该数组的第4个元素,你使用:
cin >> orderid[4];
调用的cin.operator >> (char& ch)的重载,相当于:
char foo;
cin >> foo;
所以读入的当然只有一位字符。

另外使用cin来读取字符串数据时,推荐使用STL的string类,如果在特殊情况下非使用字符数组不可,也要用楼上的方法,cin.get或cin.getline,不能直接:
char foo[10];
cin >> foo;
这样会造成内存覆写,runtime error。

cin>>orderid[4];
改成cin.getline(orderid,5);
/*cin.getline是读入一行字符*/

cin>>orderid[4]; 这种语句明显错误,你得到的只是orderid的第4个位置的数据

楼主回去好好理解下内存和指针吧