二进制文件中的字符串,struct?

时间:2015-11-30 19:30:57

标签: c++ struct binaryfiles

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct client {
public:
char name[10];
  int balance;
  char id[5];

};

int main()
{
  int ans;
 int x;
 string nameIn;
 string adjName;

 ofstream out("client1.dat", ios::binary);

 cout << "\nDo you want to add information or update info" << endl;
 cin >> ans;
 if (ans == 1)
 {
    cout << "\nPlease enter the name of your client" << endl;
    cin >> nameIn;

  while (nameIn.length() <=10)
  {
      for (int i=0; i < 10; i++)
      {
         adjName[i] = nameIn[i];
     }
 }
 while (10-adjName.length()>0)
{
    int x = 10 - adjName.length();

    for (x; x< 10; x++)
    {
        adjName[x] = ' ';
    }
}
 for (int i = 0; i < adjName.length(); i++)
{
    client name = adjName[i];
}

但此部分一直显示为错误

 for (int i = 0; i < adjName.length(); i++)
   {
    client name = adjName[i];

我试图让用户写一个名字,如果它超过10个字母,它会将其剪掉,或者更短,它会添加空格。 也有人可以解释为什么你不能写字符串到二进制文件请? 如果我使用字符串,为什么我必须使用struct而不是class。

1 个答案:

答案 0 :(得分:0)

首先,你的代码中有一个拼写错误:client name = adjName[i];毫无意义。你忘记了点吗?

第二个(也是最重要的)你在C ++代码中使用C字符指针。除非必须,否则你不应该 - 而且现在没有必要。您的代码应如下所示:

struct client {
   std::string name;
};

// read the data
name = nameIn.substr(0, 10);