当前位置: 首页 > news >正文

工作是套模板做网站公益手游app平台

工作是套模板做网站,公益手游app平台,医院做网站运维,临沂手机网站建设C语言的输入与输出 在C语言当中#xff0c;我们使用最频繁的输入输出方式就是scanf与printf#xff1a; scanf#xff1a; 从标准输入设备#xff08;键盘#xff09;读取数据#xff0c;并将读取到的值存放到某一指定变量当中。printf#xff1a; 将指定的数据输出到…C语言的输入与输出 在C语言当中我们使用最频繁的输入输出方式就是scanf与printf scanf 从标准输入设备键盘读取数据并将读取到的值存放到某一指定变量当中。printf 将指定的数据输出到标准输出设备屏幕使用时需要注意宽度输出和精度输出的控制。 C语言借助了相应的缓冲区来进行输入与输出。如下图所示 对输入输出缓冲区的理解 可以屏蔽掉低级I/O的实现。 低级I/O的实现依赖操作系统本身内核的实现所以如果能够屏蔽这部分的差异可以很容易写出可移植的程序。可以使用这部分的内容实现“行”读取的行为。 对于计算机而言是没有“行”这个概念的有了这部分就可以定义“行”的概念然后解析缓冲区的内容返回一个“行”。 流是什么 “流”即是流动的意思是物质从一处向另一处流动的过程是对一种有序连续且有方向性的数据的抽象描述。 C流是指信息从外部输入设备如键盘向计算机内部如内存输入和从计算机内部向外部输出设备如显示器输出的过程。这种输入输出的过程被形象的比喻为“流”。 它的特性是有序连续、具有方向性 为了实现这种流动C定义了I/O标准类库这些每个类都称为流/流类用以完成某方面的功能 CIO流 C系统实现了一个庞大的类库其中ios为基类其他类都是直接或间接派生自ios类 C标准IO流 C标准库提供了4个全局流对象cin、cout、cerr、clog 使用cout进行标准输出即数据从内存流向控制台显示器。使用cin进行标准输入即数据通过键盘输入到程序中。使用cerr进行标准错误的输出。使用clog进行日志的输出。 从上图可以看出cout、cerr、clog都是由ostream类实例化出的三个不同的对象因此这三个对象基本没什么区别只是应用场景不同。 在使用时候必须要包含#include文件并引入std标准命名空间。 注意 1、cin为缓冲流。 键盘输入的数据保存在缓冲区中当要提取时是从缓冲区中拿。 如果一次输入过多会留在那儿慢慢用如果输入错了必须在回车之前修改如果回车键按下就无法挽回了。只有把输入缓冲区中的数据取完后才要求输入新的数据。 2、输入的数据类型必须与要提取的数据类型一致否则出错。出错只是在流的状态字state中对应位置位置1程序继续。 3、空格和回车都可以作为数据之间的分格符所以多个数据可以在一行输入也可以分行输 入。但如果是字符型和字符串则空格ASCII码为32无法用cin输入字符串中也不能有空格。回车符也无法读入。 #include iostream #include string using namespace std; int main(){string s;cin s; //输入hello worldcout s endl; //输出helloreturn 0; }对于含有空格的字符串我们需要使用getline函数进行读取因为getline函数只有遇到’\n’才会停止读取。 #include iostream #include string using namespace std; int main(){string s;getline(cin, s); //输入hello worldcout s endl; //输出hello worldreturn 0; }4、cin和cout可以直接输入和输出内置类型数据原因标准库已经将所有内置类型的输入和输出全部重载了 5、对于自定义类型如果要支持cin和cout的标准输入输出需要对和进行重载。 6、循环输入和输出 // 单个元素循环输入 while (cin a) {// ... } // 多个元素循环输入 while (c a b c) {// ... } // 整行接收 while (cin str) {// ... }7、istream类型对象转换为逻辑条件判断值 istream operator (int val); explicit operator bool() const;实际上我们看到使用while(cini)去流中提取对象数据时调用的operator返回值是 istream类型的对象那么这里可以做逻辑条件值源自于istream的对象又调用了operator booloperator bool调用时如果接收流失败或者有结束标志则返回false。 C文件IO流 C标准库中的fstream头文件提供了用于文件输入和输出的类和接口。这些类通常与文件流对象一起使用允许你打开、读取、写入和关闭文件。以下是一些常用的fstream接口和类的介绍 ifstream输入文件流ifstream类用于从文件中读取数据。 常用成员函数 open(const char* filename, ios_base::openmode mode ios_base::in)打开指定文件以供读取。mode参数指定了文件的打开模式例如 ios::in 表示只读模式。close()关闭打开的文件。is_open()检查文件是否已经成功打开。get()从文件中读取一个字符。getline(char* buffer, streamsize count, char delim)从文件中读取一行文本直到遇到指定的分隔符或达到指定的字符数。operator用于从文件中读取各种数据类型例如 int、double等。 ofstream输出文件流 ofstream类用于向文件中写入数据。常用成员函数 open(const char* filename, ios_base::openmode mode ios_base::out)打开指定文件以供写入。mode参数指定了文件的打开模式例如 ios::out 表示只写模式。close()关闭打开的文件。is_open()检查文件是否已经成功打开。put(char c)将字符写入文件。write(const char* buffer, streamsize count)将指定数量的字节写入文件。operator用于将各种数据类型写入文件例如 int、double等。 fstream文件流 fstream类可用于既可以读取又可以写入文件的情况。它继承了ifstream和ofstream的所有成员函数因此可以用于打开、读取和写入文件。 以下是一些常见的文件打开模式 ios::in 打开文件以供读取。可以使用ifstream类或fstream类来读取文件内容。 ios::out 打开文件以供写入。可以使用ofstream类或fstream类来写入文件内容。如果文件不存在则会创建一个新文件如果文件已存在则会截断清空文件内容。 ios::app 打开文件以供追加写入。新数据将被添加到文件的末尾而不会截断文件内容。如果文件不存在则会创建一个新文件。 ios::binary 以二进制模式打开文件。这个模式用于处理二进制文件如图像、音频或其他非文本文件。在二进制模式下不会执行文本的自动换行和转换。 ios::ate 打开文件后将文件指针移到文件的末尾。这可以让你立即开始读取或写入文件的末尾部分。 ios::trunc 如果文件已存在在打开文件时会截断清空文件内容。通常与ios::out一起使用以确保文件被清空后写入新数据。 这些打开模式可以组合使用通过按位或运算符|来实现。例如要以二进制追加写入的方式打开文件可以使用ios::binary | ios::app。 代码示例 #include iostream #include fstream using namespace std;int main() {// 打开一个文本文件以供读取ifstream inputFile(input.txt, ios::in);// 打开一个二进制文件以供写入如果不存在则创建ofstream binaryFile(output.bin, ios::out | ios::binary);// 打开一个文本文件以供追加写入ofstream appendFile(log.txt, ios::out | ios::app);if (inputFile.is_open() binaryFile.is_open() appendFile.is_open()) {// 文件已成功打开可以进行读取和写入操作// ...// 关闭文件inputFile.close();binaryFile.close();appendFile.close();} else {cout 无法打开文件 endl;}return 0; }控制文件指针位置 tellg和seekg是C中用于在文件流对象中控制文件指针位置的函数通常与ifstream和fstream一起使用用于读取文件的特定位置或获取当前文件指针的位置。 tellg函数 tellg函数用于获取当前文件指针的位置读取位置。它返回一个类型为streampos的值表示当前文件指针的位置。streampos通常是一个整数类型用于表示文件的字节偏移量。 用法示例 ifstream inputFile(example.txt, ios::in);if (inputFile.is_open()) {// 获取当前文件指针的位置streampos currentPosition inputFile.tellg();cout 当前文件指针位置 currentPosition endl;// 读取文件内容// ...// 获取新的文件指针位置currentPosition inputFile.tellg();cout 新的文件指针位置 currentPosition endl; }seekg函数 seekg函数用于设置文件指针的位置以便在文件中进行定位。它允许你将文件指针移动到文件的特定位置以便读取或写入数据。seekg接受两个参数第一个参数是偏移量第二个参数是基准位置用于确定偏移量是相对于文件的开头、当前位置还是文件的末尾。 基准位置可以是以下之一 ios::beg基于文件的开头。ios::cur基于当前文件指针位置。ios::end基于文件的末尾。 用法示例 ifstream inputFile(example.txt, ios::in);if (inputFile.is_open()) {// 将文件指针移动到文件的第10个字节相对于文件开头inputFile.seekg(10, ios::beg);// 读取从第10个字节开始的内容string data;inputFile data;cout 从第10个字节开始的内容 data endl;// 将文件指针移动到文件末尾inputFile.seekg(0, ios::end);// 获取文件末尾的位置streampos endPosition inputFile.tellg();cout 文件末尾位置 endPosition endl; }文件操作示例 以二进制的形式操作文件 以二进制的形式对文件进行写入操作 //以二进制的形式对文件进行写入 void WriteBinary(){ofstream ofile; //定义文件流对象ofile.open(test.bin, ofstream::out | ofstream::binary); //以二进制写入的方式打开test.bin文件char data[] Hello World;ofile.write(data, strlen(data)); //将data字符串写入文件ofile.put(!); //将字符!写入文件ofile.close(); //关闭文件 } 以二进制的形式对文件进行读取操作 //以二进制的形式对文件进行读取 void ReadBinary(){ifstream ifile; //定义文件流对象ifile.open(test.bin, ofstream::in | ofstream::binary); //以二进制读取的方式打开test.bin文件ifile.seekg(0, ifile.end); //跳转到文件末尾int length ifile.tellg(); //获取当前字符在文件当中的位置即文件的字符总数ifile.seekg(0, ifile.beg); //重新回到文件开头char data[100];ifile.read(data, length); //将文件当中的数据全部读取到字符串data当中ifile.close(); //关闭文件 }以文本的形式操作文件 以文本的形式对文件进行写入操作 //以文本的形式对文件进行写入 void WriteTxt(){ofstream ofile; //定义文件流对象ofile.open(test.txt); //以写入的方式打开test.txt文件char data[] Hello World;ofile.write(data, strlen(data)); //将data字符串写入文件ofile.put(!); //将字符!写入文件ofile.close(); //关闭文件 }以文本的形式对文件进行读取操作 //以文本的形式对文件进行读取 void ReadTxt(){ifstream ifile; //定义文件流对象ifile.open(test.txt); //以读取的方式打开test.txt文件ifile.seekg(0, ifile.end); //跳转到文件末尾int length ifile.tellg(); //获取当前字符在文件当中的位置即文件的字符总数ifile.seekg(0, ifile.beg); //重新回到文件开头char data[100];ifile.read(data, length); //将文件当中的数据全部读取到字符串data当中cout length endl;cout data endl;ifile.close(); //关闭文件 }注意 使用ofstream类对象的open函数时若不指定打开方式则默认以写的方式打开文件使用ifstream类对象的open函数时若不指定打开方式则默认以读的方式打开文件使用fstream类对象的open函数时若不指定打开方式则默认以写读的方式打开文件。 使用和对文件进行操作 使用和运算符对文件进行读写操作会变得很简单也很形象。 对文件进行写入操作 //对文件进行写入操作 void WriteFile(){ofstream ofs(data.txt); //定义文件流对象并打开文件ofs Hello World; //字符串“流入”文件ofs.close(); //关闭文件 }对文件进行读取操作 //对文件进行读取操作 void ReadFile(){ifstream ifs(data.txt); //定义文件流对象并打开文件char data[100];ifs data; //文件数据“流入”字符串dataifs.close(); //关闭文件 }stringstream流 在C语言中我们若是想要将一个整型变量的数据转化为字符串格式有以下两种方法 1、使用itoa函数进行转化。 int a 10; char arr[10]; itoa(a, arr, 10); //将整型的a转化为十进制字符数字存储在字符串arr当中2、使用sprintf函数进行转化。 int a 10; char arr[10]; sprintf(arr, %d, a); //将整型的a转化为字符串格式存储在字符串arr当中虽然itoa函数和sprintf函数都能完成转化但是在两个函数在转化时都需要先给出保存结果的空间而空间的大小是不太好界定的除此之外转化格式不匹配时可能还会得到错误的结果甚至程序崩溃。 在C中我们可以使用stringstream类对象来避开此问题。在程序当中如果想要使用stringstream必须要包含头文件sstream。在该头文件下有三个类 类对应操作场景ostringstream输出操作istringstream输入操作stringstream输入操作输出操作 以下是stringstream的一些常用接口 1、stringstream 的构造函数 stringstream()创建一个空的字符串流。 stringstream(std::string str)使用给定的字符串 str 初始化字符串流。 2、插入数据到字符串流 操作符插入数据到字符串流中。你可以使用它来插入各种数据类型如整数、浮点数、字符串等。 std::stringstream ss; int num 42; ss The answer is: num;3、从字符串流中提取数据 操作符从字符串流中提取数据。你可以使用它来提取数据到不同的数据类型。 int extractedNum; ss extractedNum;4、获取字符串流中的字符串 str() 函数获取字符串流中的全部内容作为一个字符串。 std::string content ss.str();5、清空字符串流 clear() 函数清空字符串流的状态和内容。 ss.clear();6、指定基数进制 std::hex、std::oct、std::dec可以使用这些流控制器来指定插入或提取整数时的进制如十六进制、八进制或十进制。 int num 255; ss std::hex num; // 将 num 以十六进制插入7、获取当前位置 tellg() 函数获取当前的读取位置。 std::streampos pos ss.tellg();8、设置读取位置 seekg(std::streampos pos)将读取位置设置为指定的位置。 ss.seekg(0); // 设置读取位置为开头stringstream流操作示例 1、将数值类型数据格式化为字符串。 #include iostream #include sstream #include string using namespace std; int main(){int a 10;string sa;stringstream s;s a; //将int类型的a放入输入流s sa; //从s中抽取前面插入的int类型的值赋值给string类型方式一cout sa endl;s.str(); //将stringstream底层管理的string对象设置为。s.clear(); //将上次转换状态清空掉//进行下一次转换double b 3.14;s b;sa s.str(); //获取stringstream中管理的string类型方式二cout sa endl;return 0; }2、字符串拼接。 #include iostream #include sstream #include string using namespace std; int main(){string rets;stringstream s;s Hello World; //将多个字符串放入stringstream中s rets; //方式一获取cout rets endl;s.str(); //将stringstream底层管理的string对象设置为空字符串s.clear(); //将上次转换状态清空掉s Thanks for reading; //将多个字符串放入stringstream中rets s.str(); //方式二获取cout rets endl;return 0; }注意事项 stringstream实际是在底层维护了一个string类型的对象用来保存结果。stringstream在转换结尾时即最后一个转换后会将其内部状态设置为badbit因此在下一次转换前必须调用clear将状态重置为goodbit才可以转换但clear不会将stringstream底层的string对象清空。可以使用s.str(“”)的方式将stringstream底层的string对象设置为空字符串否则多次转换时会将结果全部累积在底层string对象中。获取stringstream转换后的结果有两个方法一是使用运算符之间从流当中提取二是使用s.str( )获取stringstream底层的string对象。stringstream使用string类对象代替字符数组可以避免缓冲区溢出的危险而且其会对参数类型进行推演不需要格式化控制也不会存在格式化失败的风险因此使用更方便更安全。
http://www.dnsts.com.cn/news/125734.html

相关文章:

  • c net 做网站好吗网页设计快速培训
  • 漳州北京网站建设公司绍兴seo优化
  • 做微商哪个网站好素材网站源码
  • 室内装饰设计专业SEO优化网站建设价格
  • 惠山网页制作乐清seo
  • 金坛做网站哪家好哔哩哔哩网页版下载
  • 网站返回500错误创造一个软件需要多少钱
  • 网站有源码之后怎么建设网站wordpress接入微信订阅号
  • 系统网站设计做农产品网站
  • 广东手机网站制作公司网站建设费财务列账
  • 梅林网站建设黑龙江哈尔滨网站建设
  • 网络营销的定义哪些网站可以seo
  • 黑白灰 网站那些是flash做的网站
  • 无锡网站科技公司12388网站建设管理情况
  • 重庆国外网站推广四川通管局网站
  • 网站技术建设维护技术论文wordpress显示所有tag
  • 郑州本地做团购的网站网站怎么做代码优化
  • 肇庆网站制作软件wordpress 评论排序
  • 如何服务器ip地址做网站公司网站如何制作
  • 3d网站开发成本西安网站设计方案
  • 怎么网站建设公司wordpress主题的网站模板
  • 如何创建个人网站英语作文柏乡县建设局网站
  • 交友系统网站建设做网站图片表情
  • 常州网站建站网站备案地址
  • 做网站个体户执照婚纱摄影网站模板免费下载
  • 英文网站建设合同网络营销策略和营销策略的区别
  • 网站建设对电子商务中的作用八戒财税
  • 中文网站建设计划书公司网站要备案吗
  • 建设网站工作内容网络营销的网站建设
  • dw怎么做网站教程房地产网信息