【发布时间】:2015-12-01 03:36:21
【问题描述】:
#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 个字母,它会切断它,或者更短它会添加空格。 也有人可以解释一下为什么不能将字符串写入二进制文件吗? 如果我使用字符串,为什么我必须使用结构而不是类。
【问题讨论】:
-
尽量准确地指出错误在哪里以及错误是什么。这也可能是无限循环:while (nameIn.length()
-
客户名称 = adjName[i];对于这一行,它说 - 不存在合适的构造函数来从 char 转换为“client”
-
@JackFaber 也有人能解释一下为什么你不能将字符串写入二进制文件吗? -- 检查你在尝试写入字符串时创建的文件。你看到你的字符串在那乱七八糟的数据中了吗?那就是通过检查的证据。您不能将您在文件中看到的垃圾转回原始字符串。所以真正要问的问题是“我保存了什么?”
-
仅供参考:SO 的工作方式您需要发布 2 个问题:一个关于超过 10 个字符的问题,另一个关于如何将字符串写入二进制文件。一旦有人解决了第一个问题,请务必接受他们的答案并单独提出下一个问题。
-
您可以使用调试器吗?如果没有,就买一个。一旦您可以逐行浏览并查看发生了什么,您的理解将增加 10 倍。
标签: c++ struct binaryfiles