| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 851 人关注过本帖
标题:关于给结构体变量赋值问题,
只看楼主 加入收藏
ytiantian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-7
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:4 
关于给结构体变量赋值问题,
程序代码:
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;
int main(){
    struct Student{
    string Name;
    string stuNum;
    string stuObj;
           };
    string str1;
    string str2;
    string str3;
    Student *p1 = new Student;
    p1.Name  =  "姓名:" ; //报错  用Student.Name也试过
    p1.stuNum = "学号: " ; //报错
    p1.stuObj = "科目: " ;  //报错
    cout << "请输入您的姓名:" <<endl;
         cin >>str1;
    cout << "请输入您的学号:" <<endl;
         cin >>str2;
    cout << "请输入您的科目:" <<endl;
         cin >>str3;
    Student.Name = Student.Name + str1;
    Student.stuNum = Student.stuNum + str2;
    Student.stuObj = Student.stuObj + str3;
    ofstream outfile("Myworld.txt",ios::binary);
    outfile.write(str1.c_str(),100);
    if(outfile.good())
    {
     cout << "打开文件成功!"
          <<endl;
     }
    outfile.close();
    system("pause");
   
    }
这个结构体保存学员的姓名、学号、和科目,暂时只要这些。先给结构体的Name赋值“姓名:”是为了跟输入的str1方便连接,最后要输出的文本的现实为“姓名:张三”之类,那个结构体已经分配空间 但还是没办法解决,刚学C++两个月、求一起进步的朋友  扣扣247804877
搜索更多相关主题的帖子: 结构体 
2013-05-21 20:33
ytiantian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-7
收藏
得分:0 
刚学C++两个月、求一起进步的朋友  扣扣247804877   验证信息随便打
2013-05-21 20:34
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:7 
Student p1 = new Student;可以直接初始化Student p1;
Student.Name = Student.Name + str1这个不能使用结构体的关键字,就像int一样。
可以改成p1.Name.....

[ 本帖最后由 lzj12530 于 2013-5-29 10:30 编辑 ]

C++菜鸟
2013-05-21 21:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:7 
只改掉了你语法及逻辑上的错误,设计上的错误没改
另外,告诉你一个知识点---“C/C++应该避免滥用指针,这和Java/.Net不同,Java/.Net中除了int等最基础类别其它全是指针”(虽然这和大多数XX的观点真好相反)

程序代码:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;

int main()
{
    struct Student{
        string Name;
        string stuNum;
        string stuObj;
    };
    Student p1;
    p1.Name  =  "姓名:";
    p1.stuNum = "学号: ";
    p1.stuObj = "科目: ";

    string str1;
    string str2;
    string str3;
    cout << "请输入您的姓名:" <<endl;
    cin >>str1;
    cout << "请输入您的学号:" <<endl;
    cin >>str2;
    cout << "请输入您的科目:" <<endl;
    cin >>str3;

    p1.Name = p1.Name + str1;
    p1.stuNum = p1.stuNum + str2;
    p1.stuObj = p1.stuObj + str3;

    ofstream outfile("Myworld.txt",ios::binary);
    if( outfile )
        cout << "打开文件成功!" << endl;
    else
        return 1;

    outfile.write( str1.c_str(), str1.size() );
    outfile.close();

    return 0;
}

如果你一定要用 Student *p1 = new Student;
那么接下来取其 Name 成员,应当
p1->Name
或者
(*p1).Name
2013-05-22 08:52
justlxy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:158
注 册:2013-5-14
收藏
得分:7 
三楼说的完全错误,四楼说的也有问题,首先指针是C/C++的最重要的部分,没有掌握指针就没有掌握C的精华。
当然在你的程序中可不用指针,因为程序比较小,指针的优势不明显(还有就是初学慎用);
我将你的程序修改过了,正确程序如下:
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;
struct Student
{
     string Name;
     string stuNum;
     string stuObj;
};                      //通常把结构体的声明放在主函数之外。
int main()
{
     string str1;
     string str2;
     string str3;
    Student *p1 = new Student;
     (*p1).Name  =  "姓名:" ; //报错  用Student.Name也试过      //此三处错误已修改,当然(*p1).可以用p1->替代之。
     (*p1).stuNum = "学号: " ; //报错
     (*p1).stuObj = "科目: " ;  //报错
    cout << "请输入您的姓名:" <<endl;
          cin >>str1;
     cout << "请输入您的学号:" <<endl;
          cin >>str2;
     cout << "请输入您的科目:" <<endl;
          cin >>str3;
     (*p1).Name = (*p1).Name + str1;
     (*p1).stuNum = (*p1).stuNum + str2;
     (*p1).stuObj = (*p1).stuObj + str3;           //注意这三处与你先前程序的不同之处。
     ofstream outfile("Myworld.txt",ios::binary);
     outfile.write(str1.c_str(),100);
     if(outfile.good())
     {
      cout << "打开文件成功!"
           <<endl;
      }
     outfile.close();
     system("pause");
return 0;                               //非void型函数需要函数返回值。
}


[ 本帖最后由 justlxy 于 2013-5-24 17:16 编辑 ]
2013-05-24 17:14
快速回复:关于给结构体变量赋值问题,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019953 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved