C++ 流C/C+中的随机数、符号、字符+;
大家好,我是新来的,对c/c++有点陌生,我通常不练习流,但当我尝试创建流时,打开用此代码创建的文件,我总是在创建的.txt文件中得到随机数、字符、符号和垃圾。 这样地: . 我看到的是随机符号,输入的是字符而不是数字,名称可以,因为它显示得很好,但有时当我写长名称时,它会写垃圾 你能帮我解决这个问题吗?代码如下:C++ 流C/C+中的随机数、符号、字符+;,c++,random,struct,filestream,C++,Random,Struct,Filestream,大家好,我是新来的,对c/c++有点陌生,我通常不练习流,但当我尝试创建流时,打开用此代码创建的文件,我总是在创建的.txt文件中得到随机数、字符、符号和垃圾。 这样地: . 我看到的是随机符号,输入的是字符而不是数字,名称可以,因为它显示得很好,但有时当我写长名称时,它会写垃圾 你能帮我解决这个问题吗?代码如下: struct示例{ int代码; 字符名[20]; }sampl; int main(){ CUT< P>你将C++和旧C设备混合起来用于输入和输出。如果你坚持C++,则将有一个更
struct示例{
int代码;
字符名[20];
}sampl;
int main(){
CUT< P>你将C++和旧C设备混合起来用于输入和输出。如果你坚持C++,则将有一个更容易的时间。
首先,让我们用C++等价的替换结构:
struct sample {
int code;
std::string name;
};
现在,name
可以根据需要容纳任意多的字符
我们现在将编写一个函数,它将输出一个<代码>示例<代码>到C++输出流:
std::ostream& write_sample(std::ostream& os, const sample& samp)
{
os << samp.code << "\n" << samp.name;
return os;
}
write_sample(std::cout, samp);
现在,我们可以通过将write_sample()
函数与std::cout
一起使用来快速检查是否正确,这是一种输出流:
std::ostream& write_sample(std::ostream& os, const sample& samp)
{
os << samp.code << "\n" << samp.name;
return os;
}
write_sample(std::cout, samp);
这应该重复您在控制台中输入的内容
改写文件,我们可以使用C++工具打开文件流:
std::ofstream outfile{"Hellothere.txt"};
现在,我们可以再次将我们的write_sample()
函数用于此新流:
write_sample(outfile, samp);
当您的程序运行时,hellother.txt应该包含您输入的文本
作为最后一个(稍微高级一点的)操作,您可能希望将write_sample()
函数重命名为operatorUnrelated,fflush(stdin);
-不要这样做。它在任何方面都不是标准的。并且get(sampl.name)
-永远不要这样做,获取
非常可怕,因为它的可恶性而被从标准库中删除。总之,请理解您正在将示例
对象的全部内容写入您的文件,包括未设置的名称
中的字节,以及i的实现表示形式nt
在内存中。你的代码不执行格式化输出,因此你从中得到的正是你告诉它要做的;将示例的内存表示转储到磁盘文件中。我读了很多次你的答案,但没有100%得到,但是的,我了解你,但我该如何解决这个问题?我应该更改int code到char code
,对吗?纠正我。或者你可以编辑我的代码,或者告诉我应该在那里写些什么来解决它,或者其他什么?我读了你的答案三遍,现在我完全理解了,谢谢你的帮助
outfile << samp;
#include <fstream>
#include <iostream>
#include <string>
struct sample {
int code;
std::string name;
};
std::ostream& operator<<(std::ostream& os, const sample& samp)
{
return os << samp.code << "\n" << samp.name;
}
int main()
{
using namespace std;
sample samp;
cout << "Enter code:\n";
cin >> samp.code;
cout << "Enter name:\n";
cin >> samp.name;
std::ofstream outfile{"Hellothere.txt"};
outfile << samp;
}