精华内容
下载资源
问答
  • C++ 输入换行停止输入

    千次阅读 2020-04-04 09:45:17
    /*第一次键盘输入一个字符'c'按下enter,cin.get(c)读取字符'c'而后面的'\n'还在缓冲区内 当不使用cin.ignore()清空缓冲区时,下一次cin.get()会直接读取上一次键入的'\n',程序跳出循环结束。*/ void main() { ...
    #include <iostream>
    using namespace std;
    /*第一次键盘输入一个字符'c'按下enter,cin.get(c)读取字符'c'而后面的'\n'还在缓冲区内
    当不使用cin.ignore()清空缓冲区时,下一次cin.get()会直接读取上一次键入的'\n',程序跳出循环结束。*/
    void main()
    {
    	char c;
    	cout << "enter a char:";
    	cin.get(c);
    	while(c!='\n'){
    		cin.ignore(); 
    		cout << "the value of " << c << "'s:" << int(c) <<'\n';
    		cout << "enter a char: ";
    		cin.get(c);
    	}
    }
    

    在这里插入图片描述

    展开全文
  • C++输入输出流

    万次阅读 多人点赞 2019-06-11 20:46:05
    C++的标准库中,将用于进行数据输入输出的类统称为”流类“。cin是流类istream的对象,cout是流类ostream的对象。要使用流类,需要在程序中包含iostream头文件。 C++中常用的几个流类及其2相互关系: 图1中的...

    数据输入和输出过程也是数据传输的过程。数据就像流水一样从一个地方流动到另一个地方,因此,在C++中将此过程称为“流(stream)"。

    在C++的标准库中,将用于进行数据输入输出的类统称为”流类“。cin是流类istream的对象,cout是流类ostream的对象。要使用流类,需要在程序中包含iostream头文件。

    C++中常用的几个流类及其2相互关系:

     图1中的箭头代表派生类。ios是抽象基类,它派生出istream和ostream。istream和ostream又共同派生出了iostream类。

    为了避免多继承的二义性,从ios派生出istream和ostream时,均使用virtual关键字(虚继承)。

    istream是用于输入的流类,cin就是该类的对象。

    ostream是用于输出的流类,cout就是该类的对象。

    ifstream是用于从文件读取数据的类。

    ofstream是用于向文件写入数据的类。

    iostream是既能用于输入,又能用于输出的类。

    fstream是既能从文件读取数据,又能向文件写入数据的类。

    标准流对象

    iostream头文件中定义了四个标准流对象,它们是cin、cout、cerr和clog。

    cin对应于标准输入流,用于从键盘读取数据,也可以被重定向为从文件中读取数据。

    cout对应于标准输出流,用于向屏幕输出数据,也可以被重定向为向文件写入数据。

    clog对应于标准错误输出流,用于向屏幕输出错误信息,不能被重定向。

    cerr和clog的区别在于:cerr不适用缓冲区,直接向显示器输出信息;而输出到clog中的信息会先被存放到缓冲区,缓冲区满或者刷新时才输出到屏幕。

    ostream类的无参构造函数和复制构造函数都是私有的,因此在程序中一般无法定义ostream类的对象,唯一能用的ostream类的对象就是cout。

    cout可以被重定向,而cerr不能。所谓重定向,就是将输入的源或输出的目的地改变。例如,cout本来是输出到屏幕的,但是经过重定向,本该输出到屏幕上的东西就可以被输出到文件中。

    例如:

    #include <iostream>
    using namespace std;
    int main()
    {
        int x,y;
        cin >> x >> y;
        freopen("test.txt", "w", stdout);  //将标准输出重定向到 test.txt文件
        if( y == 0 )  //除数为0则输出错误信息
            cerr << "error." << endl;
        else
            cout << x /y ;
        return 0;
    }

    其中,freopen是个标准库函数,第二个参数w代表写模式,第三个参数代表标准输出。该语句的作用是将标准输出重定向为test.txt文件。重定向之后,所有对cout的输出都不再出现在屏幕上,而是在test.txt文件中。

    cin也可以被重定向,如果在程序中加入

    freopen("input.dat", "r", stdin);

    第二个参数r代表读入方式,第三个参数stdin代表输入。执行此语句后,cin就不再从键盘读入数据,而是从input.dat文件中读入数据。

    使用流操作算子

    C++中常用的输入流操纵算子如表1所示,它们都是在头文件iomanip中定义的,要使用这些流操纵算子,必须包含该头文件。

    note:"流操纵算子"一栏中的*不是算子的一部分,星号表示在没有使用任何算子的情况下,就等效于使用了该算子。例如,在默认情况下,整数是十进制形式输出的,等效于使用了dec算子。

    流操作算子的用法

    使用这些算子的方法是将算子用<<和cout连用。例如

    cout<<hex<<12<<","<<24;

    这条语句的作用是指定以十六进制形式输出后面两个数,因此输出结果是:

    c,18

    setiosflags()算子

    setiosflags()算子实际上是一个函数库,它以一些标志作为参数,这些标志可以是在iostream头文件中定义的以下几种取值,它们的含义和同名算子一样。

     这些标志实际上都是仅有某比特位为1,而其他比特位都为0的整数。

    多个标志可以用|运算符连接,表示同时设置。例如:

    cout << setiosflags(ios::scientific|ios::showpos) << 12.34;

    如果两个相互矛盾的标志同时被设置,如先设置setiosflags(ios::fixed),然后设置setiosflags(ios::scientific),那么结果可能就是两个标志都不起作用。因此,在设置了某标志,又要设置其他与之矛盾的标志时,就应该用resetiosflags清除原先的标志。例如下面的三条语句:

    cout << setiosflags(ios::fixed) << 12.34 << endl;
    cout << resetiosflags(ios::fixed) << setiosflags(ios::scientific | ios::showpos) << 12.34 << endl;
    cout << resetiosflags(ios::showpos) << 12.34 << endl;  //清除要输出正号的标志

    输出结果是:

    12.340000
    +1.234000e+001
    1.234000e+001

    需要注意的是,setw()算子所起的作用是一次性的,即之影响下一次输出,每次需要指定输出宽度时都要使用setw()。因可以看到,第9)行的输出因为没有使用setw(),输出宽度就不再是前面所指定的12个字符。

    在读入字符串时,setw()还能影响cin的行为,例如下面的程序:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
        string s1, s2;
        cin >> setw(4) >> s1 >> setw(3) >> s2;
        cout << s1 << "," << s2 << endl;
        return 0;
    }

    输入:

    1234567890↙

    程序的输出结果是:

    1234,567

    说明setw(4)使得读入s1时,只读入4个字符串,其后的setw(3)使得读入s2时只读入3个字符。

    setw()用于cin时,同时只影响下一次的输入。

    调用cout的成员函数

    ostream类有一些成员函数,通过cout调用它们也能用于控制输出的格式,其作用和流操纵算子相同。

    这些成员函数的用法十分简单,如:

    cout.setf(ios::scientific);
    cout.precision(8);
    cout << 12.23 << endl;

    输出结果是:

    1.22300000e+001

    文章内容来自于http://c.biancheng.net/view/275.html

    展开全文
  • C++输入输出文件流

    千次阅读 2020-02-12 20:40:38
    一、C++输入输出 I/O 库头文件 下列的头文件在 C++ 编程中很重要。 标准输出流(cout) 预定义的对象 cout 是 iostream 类的一个实例。cout 对象“连接”到标准输出设备,通常是显示屏。cout 是与流插入运算符 <...

    一、C++输入输出

    I/O 库头文件
    下列的头文件在 C++ 编程中很重要。
    在这里插入图片描述
    标准输出流(cout)
    预定义的对象 cout 是 iostream 类的一个实例。cout 对象“连接”到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的。
    标准输入流(cin)
    预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设
    备,通常是键盘。cin 是与流提取运算符 >> 结合使用的。
    标准错误流(cerr)
    预定义的对象 cerr 是 iostream 类的一个实例。cerr 对象附属到标准错误 设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都 会立即输出。
    cerr 也是与流插入运算符 << 结合使用的。

    标准日志流(clog)
    预定义的对象 clog 是 iostream 类的一个实例。clog 对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲在,直到缓冲填满或者缓冲区刷新时才会输出。 clog 也是与流插入运算符 << 结合使用的。
    **

    二、文件流

    **
    C++文件和流
    当我们学会了数据的流入和流出之后,下面我们来了解一下如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型:
    在这里插入图片描述

    :要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 和 。
    打开文件

    在从文件读取信息或者向文件写入信息之前,必须先打开文件。
    ofstream 和 fstream 对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用 ifstream 对象。 下面是 open() 函数的标准语法,open()函数是 fstream、ifstream 和 of stream 对象的一个成员。

    void open(const char *filename, ios::openmode mode);
    在这里,open()成员函数的第一参数指定要打开的文件的名称和位置,第二 个参数定义文件被打开的模式。
    在这里插入图片描述
    我们可以把以上两种或两种以上的模式结合使用。例如,如果想要以写入模 式打开文件,并希望截断文件,以防文件已存在,那么可以使用下面的语法:

    ofstream outfile;
    outfile.open(“file.dat”, ios::out | ios::trunc );

    类似地,如果想要打开一个文件用于读写,可以使用下面的语法:

    fstream afile;
    afile.open(“file.dat”, ios::out | ios::in );

    当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关 闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开 的文件。

    下面是 close()函数的标准语法,close()函数是 fstream、ifstream 和 ofstream 对象的一个成员。

    close();
    写入文件
    在 C++ 编程中,我们使用流插入运算符( << )向文件写入信息,就像使用
    该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是ofstream 或 fstream 对象,而不是 cout 对象。

    读取文件

    在 C++ 编程中,我们使用流提取运算符( >> )从文件读取信息,就像使用 该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是 ifstream 或 fstream 对象,而不是 cin 对象。
    文件位置指针
    ifstream 和 ofstream 都提供了用于重新定位文件位置指针的成员函数。
    这些成员函数包括关于istream的 seekg(“seek get”)和关于ostream的seekp(“seek put”)。
    seekg 和 seekp 的参数通常是一个长整型。第二个参数可以用于指定查找方向。查找方向可以是 ios::beg(默认,从流的开头开始定位),也可以是 ios::cur(从流的当前位置开始定位),也可以是 ios::end(从流的末尾开始定位)。
    文件位置指针是一个整数值,指定了从文件的起始位置到指针所在位置的字节数。

    下面是关于定位 “get” 文件位置指针的实例:

    // 定位到 fileObject 的第 n 个字节(假设是 ios::beg)  
    fileObject.seekg( n );  
    // 把文件的读指针从 fileObject 当前位置向后移 n 个字节 
     fileObject.seekg( n, ios::cur );  
    // 把文件的读指针从 fileObject 末尾往回移 n 个字节 
     fileObject.seekg( n, ios::end );  
    // 定位到 fileObject 的末尾  
    fileObject.seekg( 0, ios::end ); 
    

    例题:读取字母

    从键盘输入一行字母,把其中的字母字符依次存放在data1.txt中,然后将文本内容读入程序,将其中的小写字母改为大写字母,再存入磁盘文件data2.txt中。

    代码如下:

    #include "pch.h"
    #include<iostream>
    #include<fstream>
    #include<string> 
    using namespace std;
    
    
    class atoA
    {
    public:
    	char c;
    	atoA(char m)
    	{
    		c = m;
    	}
    	char ZH(char m)
    	{
    		c -= 32;
    		return c;
    	}
    };
    int main()
    {
    	cout << "请输入一串小写字母:" ;
    	string ss;
    	cin >> ss;
    	fstream file1;
    	file1.open("data1.txt");
    	file1 << ss << endl;
    	file1.close();
    
    	string s="";//设置空字符串储存读取内容
    	fstream file2;
    	file2.open("data1.txt");
    	file2 >> s;//读取到s中
    	file2.close();
    
    	string sn;
    	for (int i = 0; i < s.length(); i++)
    	{
    		atoA a(s[i]);
    		sn += a.ZH(s[i]);
    	}
    	cout <<"转化结果为:" <<sn << endl;
    
    	fstream file3;
    	file3.open("data2.txt");
    	file3 << sn << endl;
    	file3.close();
    }
    
    

    结果如下:
    在这里插入图片描述

    展开全文
  • C++输入时对换行的处理

    千次阅读 2021-05-02 15:33:41
    先看一个混合输入数字和字符串的例子: int a; char s[10]{}; cin>>a; cout<<"a:"<<a; cin.get(s,10); cout<<s; 输出结果?? 。 。 。 。 。 理想: 现实: 分析: 相信读者已经...

    眼前一亮

    先看一个混合输入数字和字符串的例子:

    	int a;
    	char s[10]{};
    	cin>>a;
    	cout<<"a:"<<a;
    	cin.get(s,10);
    	cout<<s;
    

    输出结果??





    理想:
    在这里插入图片描述
    现实:
    在这里插入图片描述

    分析:

    相信读者已经发现了,用户根本没有给字符输入的机会。问题在于我们给a输入时,通过回车键生成的换行符保留在了输入队列中
    后面的get()只能吃到前面的尾气,而面向行数输入的get()以换行符结尾 在看到第一个字符就是换行符的时候,将认为这是一个空行,所以就将一个空字符串直接赋给了s。

    这个不注意的话,确实会给我们带来的意想不到的错误。但是我们平常在用cin>>的时候,基本没有考虑过这个问题,我们再来唠叨唠叨cin>>.
    我们都知道,在输入时,需要按下回车键才能将输入的数据送到输入队列。并且 \r 被转换为 \n保存。cin>>对输入的队列的第一个是类似于空格,tab,换行类似的间隔符时,cin>>是直接忽略删除的。

    解决办法:

    这个很简单,我们直接在给字符串前输入前,将输入队列上的换行符读出即可。
    如果对面向行输入的两个类函数:
    cin.get() , cin.getline()
    不够清楚的话,可以去找找资料。

    拓展:

    我们之前提到,get(),getline()都是以换行符结尾。
    若我们在输入时,写入 \n 换行符,会读取后面的后面的内容吗?
    代码就不展示了,大家只需要知道的是:
    只有通过回车键生成的换行符,才被当作字符串的结尾

    展开全文
  • C++输入未知长度的数组

    万次阅读 多人点赞 2019-06-23 18:33:07
    假如要输入一组数字进行排序,但是不知道有多少个数字 静态数组int array[10],它的长度必须是个常数才可以定义。如果知道数组长度n,可以先cin>>n;然后用动态数组int* array = new int[n]。但是如果不知道...
  • c++输入字符串和数字以逗号隔开

    千次阅读 2020-09-02 21:09:54
    以一个问题为例对“c++输入字符串和数字以逗号隔开”进行具体说明。 例:实现一个学生信息处理程序,计算一个学生的四年平均成绩。 要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。 补充下列...
  • C++输入字符串的几种方式

    万次阅读 多人点赞 2019-05-10 10:20:21
    最近有复习到 C++ 基础知识,这里总结下在 C++输入字符串的几种方式,有需要的可以参考: 1、cin >> void Cin1() //输入一个数字 { int a, b; cin >> a >> b; cout << "a + ...
  • c++输入读入回车

    千次阅读 2019-03-08 00:16:25
    c++用cin.getline()并指定EOF结束符可以读入回车换行 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;bits/stdc++.h&gt; using namespace std; bool check(char c) { ...
  • C++ 输入一个动态大小的数组

    千次阅读 2019-10-10 00:08:25
    以往我们在进行排序等运算时需要输入一串数,我发现很多都是输入的数需要我们自己提供,比如输入1 2 3 4 5 6 7,我们需要输入元素的个数7,很多时候因为我们预先设置好的数组是大小固定的。如果我们输入的元素个数不...
  • C++输入至回车结束

    万次阅读 多人点赞 2019-02-28 18:35:52
    之前比赛被这个小问题难住了,好坑啊。 其实很简单: while(cin>...附加:C语言遇到空格且不换行时继续输入 while((c=getchar())!='\n') { ... } -------------------------------------...
  • c++输入问题:输入回车判断当前输入结束

    万次阅读 多人点赞 2018-11-21 18:13:47
    C++输入回车结束输入 例如 输入一组整数 1 3 5 7 9 按回车之后 结束输入 法1:数组 int mk[100]; int i=0; while(cin &gt;&gt; mk[i]) { i++; if (cin.get() == '\n') break; } 法2:...
  • C++ 输入两个整数求和

    千次阅读 2021-04-19 14:11:51
    #include<iostream> using namespace std; int main() { int v1, v2; cout << "Enter two numbers:" << endl; cin >> v1 >> v2; cout << "the sum of" <... v1 + v2
  • C++输入三个数按从小到大输出

    千次阅读 2020-09-25 20:51:58
    C++输入三个数按从小到大输出 通过简单的取位互换使两个变量交换数值 正确代码 #include<iostream> #include<math.h> using namespace std; int main() { int a,b,c,x; cin>>a>>b>&...
  • C++输入字符串string类型的常用方法

    千次阅读 2020-04-18 16:42:46
    cin输入字符串不能有空格 string str; cin>>str; 当执行上述语句时,若输入“hello world!”,则只会输出hello。 因为cin语句输入时,遇空格结束,不能用cin输入多个单词。 解决办法: ①getline(cin,str)...
  • C++输入输出格式控制

    千次阅读 2020-07-08 11:26:41
    输入格式控制:C++的cin自动忽略换行、空格、回车。 输出格式控制:利用cout的输出控制符 例如:setprecision(n)tmep保留n位有效数字 int main() { double a = 123.4444555666; cout << setprecision(7); //...
  • C++ 输入方法

    千次阅读 2017-02-04 10:23:45
    一、字符串输入: 1、面向单词的输入: cin>>使用空白(空格、制表符和换行符)确定字符串的结束位置。如果一次输入两个单词,中间隔着空格,则只读取第一个单词,并自动在结尾处添加空字符。而另一个单词会留在缓冲...
  • C++ 输入数据方法总结

    万次阅读 2017-08-31 20:52:48
    C++ 输入方法总结
  • C++输入输出运算符的重载

    千次阅读 多人点赞 2018-07-26 10:49:48
    ”在C++类库中提供的,所有的C++编译系统都会在提供输入流istream和输出流ostream,cin、cout是分别是istream类和ostream类的对象,在类库的头文件中已经对“&amp;amp;lt;&amp;amp;lt;”、“&amp;amp;gt...
  • C++输入 / 输出运算符的重载-详细解释

    千次阅读 多人点赞 2020-01-18 16:13:32
    事实上,你会发现C++里面很多的(尤其是运算符)重载都是 面向对象惹的祸。而用户自定义数据类型的输入输出,就是通过重载运算符“<<“和”>>“实现的。 重载输出运算符 重载输出运算符”<<“也...
  • C++输入多行数据

    千次阅读 2018-11-07 11:41:00
    编程题常用需求,比如输入两行数据。 解决思路:使用getline 程序 #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { ...
  • 记录:C++输入任意个整数的数组

    千次阅读 2020-07-22 18:19:19
    #include<iostream> #include<vector> using namespace std; int main() { /* 已知数组的大小,使用动态数组 */ int i = 0; int num;... if (cin.get() == '\n') //遇到回车,终止
  • C++输入二维数组

    千次阅读 2019-08-29 21:35:47
    C++输入二维数组 int n, m; while (cin >> n >> m) { vector<vector<int>> data(n, vector<int>(m)); int sum = 0; for (int i = 0; i < n; i++) for (int j = 0;...
  • C++输入分数,输出等级

    千次阅读 2019-03-14 23:20:29
    首先输入数据,用for循环语句可以多次输入数据,然后将数据整除(其中若数据大于100则输出错误),再用switch将整除后的情况分别判断并输出相应的等级结果即可。(新手上路,请多指教) #inslude&lt;iostream&...
  • c++ 输入一行

    千次阅读 2019-03-01 10:26:40
    string s; getline(cin,s);//以换行符为结束符
  • C++输入语句&输出语句

    万次阅读 2019-08-14 19:12:02
    输入语句 对于控制台的IO操作,C++标准在#include<iostream>中提供了
  • c++输入带空格的string

    千次阅读 2019-08-19 20:53:10
    输入带空格的string方法 string s; getline(cin,s); 参考 https://blog.csdn.net/u012856866/article/details/77511809
  • c++输入一组数字

    千次阅读 2018-09-09 20:13:15
    // 判断输入个数是奇偶 double insertedNum; if (n % 2 == 0) { //偶数 int first = n / 2 - 1; int second = n / 2; insertedNum = (double)(vector1[first] + vector1[second]) / 2.0; } else { //奇数 ...
  • C++输入字符串以换行结束

    千次阅读 2019-09-24 14:51:36
    #include "pch.h" #include <iostream> #include <string> using namespace std; int main() { string str; getline(cin, str); cout << str << endl;...#include ...
  • C++ 输入一行int数组

    万次阅读 多人点赞 2018-08-03 12:11:34
    C++中,关于输入一行char数组,我们可以用get()或者getline(),但这两个函数的参数却只能是字符(串)型变量,而不能是整型变量。那么如果要输入一行(未知具体有多少个变量输入)整型变量,该如何呢?可以用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 890,271
精华内容 356,108
关键字:

c++输入

c++ 订阅
友情链接: nowa-gui-1.9.7.zip