#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。
答案 0 :(得分:0)
首先,你的代码中有一个拼写错误:client name = adjName[i];
毫无意义。你忘记了点吗?
第二个(也是最重要的)你在C ++代码中使用C字符指针。除非必须,否则你不应该 - 而且现在没有必要。您的代码应如下所示:
struct client {
std::string name;
};
// read the data
name = nameIn.substr(0, 10);