精华内容
下载资源
问答
  • c++输出地址
    2020-10-26 16:24:57

    今天,我遇到了这样的一种情况,我想输出一个字符串的首地址。 
    那么该怎么输出呢?通常我们可能的想法是直接cout啊。 
    比如:

    char ss[20]="hello";
    cout<<ss<<endl;

     

    运行结果: 
    hello

    我们会发现,ss存储的值虽然是一个地址,但我们执行cout的时,实际上它会输出ss指向的字符串。 
    那该怎么办?我在输出的时候其实考虑到上面的情况了,然后我想了想,如果我这样输出是不是就可以了:

    char ss[20]="hello";
    cout<<&ss[0]<<endl;

    但实际运行结果还是:

    hello

    通过上面的例子我们会发现,只要我们cout后面的输出对象是一个char*的类型时,它都会当作要输出这个地址指向的字符串来执行。它会从这个地址开始输出字符,直到遇到’\0’停止。那我们怎样才能让cout输出char*类型存值的地址呢? 
    c是靠%s,%x,%p来区分指针表达式&ss[0]的输出形式的;c++没有这个格式控制,只能按一种形式输出。 
    c++标准库中I/O类对输出操作符<<重载,在遇到字符型指针时会将其当做字符串名来处理,输出指针所指的字符串。 
    既然是这样,我们只需要将char*类型的指针进行强制转换成别的类型的指针,cout就会输出指针存储的地址。我们可以把它强转成void*类型。

    char ss[20];
    cout<<(void*)ss<<endl;

    运行结果:

    0x7fff695cf900

    更多相关内容
  • c++反向输出输入数字

    2019-05-05 09:11:59
    反向输出一个整数 用C++编写 #include main() {........... }
  • c++输入输出

    千次阅读 2022-03-23 10:15:11
    输出操作中,字节从内存流向设备(例如,显示屏、打印机、磁盘驱动器、网络连接等)。 应用程序通过字节传达信息。字节可以组成字符、原始数据、图形图像、数字语音、数字视频或者任何应用程序所需要的其他信息。...


    前言

    最近在准备复试,学习c++,就当作是学习笔记了


    `

    一、流

    C++的I/O是以一连串的字节流的方式进行的。在输入操作中,字节从设备(例如,键盘、磁盘驱动器、网络连接等)流向内存。在输出操作中,字节从内存流向设备(例如,显示屏、打印机、磁盘驱动器、网络连接等)。
    应用程序通过字节传达信息。字节可以组成字符、原始数据、图形图像、数字语音、数字视频或者任何应用程序所需要的其他信息。系统I/O结构应该能持续可靠地将字节从设备传输到内存,反之亦然。这种传输一般包含一些机械运动,例如,磁盘或磁带的旋转,或者键盘的敲击。数据传输所花费的时间远远大于处理器内部处理数据所花费的时间。所以I/O操作需要仔细计划和协调,以保证最优的性能。
    C++同时提供“低层次的”和“高层次的”I/O功能。

    低层次的I/O功能(也就是非格式化的I/O)指定字节应从设备传输到内存还是从内存传输到设备。这种传输通常针对单个字节。这种低层次的L/0提供速度快、容量大的传输,但是对程序员来说并不方便。
    高层次的I/O(也就是格式化的I/O)。在这种输出方式中字节被组成了有意义的单元,例如整数、浮点数、字符、字符串和用户定义类型。除了大容量的文件处理之外,这种面向类型的方法能够满足绝大多数的I/O处理。

    1.iostream 库的头文件

    <iostream >头文件定义了cin 、 cout 、cerr和 clog对象,分别对应于标准输入流、标准输出流、无缓冲的标准错误流和有缓冲的标准错误流。同时还提供了非格式化和格式化的LO服务。

    <iomanip>头文件中声明了参数化流操纵符(例如setw和 setprecision)用于向格式化I/O提供有用的服务。
    <fstream>头文件声明了文件处理服务。

    2.输入/输出流的类和对象

    预定义对象cin是一个 istream实例,并且“被连接到”(或者“被绑定到”)标准输入设备,通常是键盘。在下面的语句中,流提取运算符(>>)用于使一个整型变量 grade的值(假设grade已经被声明为int变量)从cin输入到内存:
    cin >> grade;
    注意,由编译器确定grade的数据类型,并选择适当的流提取运算符重载。假设grade已经被正确地声明,流提取运算符不需要附加的类型信息(例如,像C语言的I/O的方式)。重载>>运算符用来输入内置类型、字符串和指针的值。
    预定义对象cout是一个ostream实例,并且“被连接到”标准输出设备,通常是显示屏。在下面的语句中,使用流插人运算符(<<)将变量grade的值从内存输出到标准输出设备:
    cout << grade
    注意,也是由编译器确定grade的数据类型(假设grade已经被正确地声明)并且选择合适的流插入运算符,因此流插入运算符也同样不需要附加类型信息。重载<<运算符用来输出内置类型、字符串和指针的值。
    预定义对象cerr是一个ostream 实例,并且“被连接到”标准错误设备。对象cerr的输出是无缓冲的。这意味着每个针对cerr的流插入的输出必须立刻显示,这对于迅速提示用户发生错误非常合适。
    预定义对象clog是一个ostream 实例,并且“被连接到"标准错误设备。clog 的输出是有缓冲的。这意味着每个针对clog中的流插入的输出将保存在缓冲区中,直到缓冲区填满或是被清空才会输出。在操作系统课程上曾讨论过,使用缓冲技术可以加强I/O的性能。

    二、输出流

    ostream提供了格式化的和非格式化的输出功能。输出功能包括使用流插入运算符(<<)执行标准数据类型的输出;通过成员函数put进行字符输出;通过成员函数write进行非格式化的输出;十进制、八进制、十六进制格式的整数输出;具有不同精确度的浮点数的输出,或是具有强制小数点的浮点数的输出,以及以科学记数和定点小数格式的输出;指定宽度数据的输出;用指定符号填充数据域的输出;以及使用科学记数和十六进制符号表示的大写字母的输出。

    使用成员函数put进行字符输出

    可以使用成员函数put输出字符。例如,语句
    cout.put(“A’);
    显示单个字符A。put也可以级联使用。例如,语句
    cout.put( ‘A’ ).put( ‘\n’ );
    输出一个字母A,接着输出一个换行符。前面的语句就以像使用<<一样的方式执行,因为点运算符(.)是从左向右执行,put 成员函数给ostream对象( cout)返回一个引用,该对象接受了put的调用。也可以用代表一个ASCII值的数字表达式作为参数来调用put成员函数,例如,语句
    cout.put( 65 );
    的输出也是A。

    三、输入流

    1.get函数

    三种get

    没有实参的成员函数 get从指定流输入一个字符(包括空白字符及其他非图形字符,比如表示文件尾的键序列等),并将这个值作为函数调用的返回值返回。get函数在遇到流中的文件尾时返回EOF值。
    带一个字符引用参数的get 函数将输入流中的下一个字符(即使它是一个空白字符)输人,并将它存诸在其引用的字符参数内。在调用这个版本的get 函数时将给调用它的istream对象返回一个引用。
    get 函数拥有三个参数:一个字符数组、一个数组长度限制和一个分隔符(默认值为‘\n’)。这个函数可以从输入流读取多个字符,它可以读取“数组最大长度-1"个字符后终止,也可以遇到分隔符就终止。在程序中,插入一个空字符用来结束字符数组中的输入字符串,字符数组在程序中作为缓冲区。**分隔符没有放置在字符数组中,而是保留在输入流中(分隔符是下一个被读取的字符)。**因此,第二次 get 函数调用所得的结果将是个空行,除非将分隔符从输人流中移出(可以使用cin.ignore( ))。

    2. getline

    成员函数getline操作与第三个版本的成员函数get类似,在该行所存储的字符数组的末尾插入一个空字符。getline函数从流中移除分隔符(也就是读取该字符然后丢弃),没有将其放在字符数组内存储。

    四、使用read、write和gcount的非格式化的I/O

    非格式化的输入/输出使用的分别是istream与 ostream 的成员函数read和 write。成员函数read将一定数量的字节读入到字符数组中,
    成员函数write则从字符数组中输出字节。这些字节没有经过任何格式化,它们就像原始字节一样输入或输出。例如,命令
    char buffer[ ] =“HAPPY BIRTHDAY”;
    cout.write( buffer,10);
    输出 buffer数组中的前10个字符(包括空字符,任何一个空字符都会导致使用cout和<<进行输出操作的终止)。调用
    cout.write(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,10);
    显示字母表的前10个字母。
    成员函数read将指定数量的字符读入到字符数组中。当读取的字符数量少于指定数量时,failbit将被设置

    五、流操纵符

    浮点精度(precision,setprecision)

    可以使用流操纵符setprecision或ios_base的成员函数 precision来控制浮点数的精度(也就是小数点右边的位数)。调用这两者之中的任何一个都可以改变输出精度,这将影响后面所有的输出操作,直到下一个设置精度操作被调用为止。调用无参数的成员函数 precision将返回当前的精度设置(这样可以在不再使用“黏性的"设置时,重新使用原来的精度设置)。

    域宽( width, setw)

    成员函数width(基类是ios_base)可以设置域宽(也就是输出值所占的字符位数或是可输入的最大字符数)并且返回原先的域宽。如果输出值的宽度比域宽小,则插入填充字符进行填充。宽度大于指定宽度的值不会被截短,会将整个值都打印出来。不含参数的width函数将返回当前域宽。
    宽度设置只适用于下一次输入或输出(也就是说宽度设置并不是“黏性的”),之后的宽度被隐式地设置为0(也就是输入和输出将使用默认设置)。一次宽度设置适用于所有后续输出的假设是逻辑错误。

    对齐(left、right 和 internal)

    流操纵符left和right分别使域左对齐并在其右边填充字符,或者右对齐并在其左边填充字符。填充字符由成员函数fill或是参数化流操纵符setill指定
    流操纵符internal 表示数字的符号(或是使用showbase流操纵符显示的基数)应当左对齐,同时数字的数值部分应右对齐,而中间的部分则使用填充字符填充。

    内容填充( fill , setfill)

    成员函数fill 指定对齐域的填充字符。如果没有字符被指定,则使用空格符填充。fill函数返回设定之前的填充字符。setill操纵符也用于设置填充字符。

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

    千次阅读 2022-03-31 10:56:46
    C++用继承方法建立了I/O流类库,输入输出过程(input/output)称为流,输入是指将数据从输入设备保存到内存的过程,输出是指从内存传输到输入设备的过程

    C++用继承方法建立了I/O流类库,输入输出过程(input/output)称为流,输入是指将数据从输入设备保存到内存的过程,输出是指从内存传输到输入设备的过程

    1.输入输出流对象

    1.1 标准流对象

    键盘是标准输入流设备,屏幕是标准输出流设备 :cin(istream的对象,从键盘输入数据到内存中)cout(ostream,从内存输出数据到屏幕上),cerr和 clog是ostream的对象,处理错误信息标准输出

    1.2 文件流对象

    对文件进行输入(读)输出(写)操作

    定义文件流对象,通过文件流的成员函数进行打开操作

    void open(const char*filename,mode) mode为打开方式

    ifstream outfile;//以输入方式打开文件

    outfile.open("file.txt")

    mode
    ios::in(ifstream默认打开方式)以输入方式打开文件,,该文件必须存在
    ios::out(ofstream)以输出方式打开文件,
    ios::app以追加方式打开文件,所有输出附加在文件末尾,指针指向EOF
    ios::ate文件指针指向EOF
    ios::binary以二进制方式(通常为纯数值文件)打开文件
    ios::trunc如果文件存在,先删除文件内容

    2.输入输出流对象的成员函数

    2.1运算符重载<<和>>

    <<插入运算符

    a. 标准输出 cout<<endl; 即 cout.operator<<(endl);

    b.文件输出 将内存中的数据写入文件中

    fstream outfile("file.txt",ios::out)

    outfile<<x<<end'<<y<<endl<<z;

    outfile.close();

    //先在程序的目录下生成file.txt的文件,将x,y,z对应内存中的数据写入文件中,关闭文件

    >>提取运算符

    a.标准输入 从键盘提取数据到内存

    cin>>a>>b>>c;

    b. 文件输入 >>将文件中的数据读取到内存中

    fstream infile("file.txt",ios::in)

    infile>>a>>b>>c;

    infile.close();//将上建立的file.txt文件,数据依次读取到变量 a,b c中

    2.2 常见输入流的成员函数

    2.2.1 get() 从输入设备获取单个字符

    a. 标准输入 get()

    char ch;
    while(ch=cin.get()!='\n')//输入回车符时循环结束
    { cout<<ch;
    }

    b. 文件输入

    get()

    fstream outfile("file.txt",ios::out);
    outfile<<"Visual Studio“;
    outfile.close();
    fstream infile("file.txt",ios::in)
    char ch;
    while(ch=infile.get()!=EOF)
    cout<<ch;

    get(ch)//字符型变量作为参数,函数调用时提取一个字符并将其写入该变量的内存地址中,读取失败(遇到文件结束符 EOF),返回为假

    while(infile.get(ch))
    cout<<ch;

    2.2.2 getline() 从输入设备中读取一个字符串

    参数 in.getline(字符数组或字符型指针,字符个数n,终止标识符)

    n=n-1+'\0'

    a. 标准输入 可读取含空白字符的字符串 直到达到个数或遇到终止标识符

    while(cin.getline(s,80))
    //ctrl+z(eof)结束循环
    

    b. 文本文件输入 读取文件并输出到数组中

    fstream outfile;
    outfile("file.txt",ios::out);
    outfile<<"Visual Studio"<<endl
    <<"c++"<<endl
    <<"wang"<<endl;
    outfile.close();
    fstream infile;
    infile("file.txt,ios::in);
    char ch;
    int len,minlen=0;
    char ch[30],s[20];
    while(infile.getline(ch,sizeof(ch))
    {
    len=(int)strlen(ch);
    if(minlen>len)
    strcpy(s,ch);
    }
    

    2.2.3 read() 输入流对象可调用此函数实现从键盘输入制定个数的多个字符的操作

    in.read(字符型指针,字符个数n) 可读取空白字符,不会自动添加字符结束符'\0'

    a. 标准输入

    char s[20];
    cin.read(s,12);
    for(int i=0;i<12;i++)
    cout<<s[i];

    b.二进制文件输入

    fstream outfile("file.dat",ios::binary|ios::out);
    for(int a=1;a<=10;a++)
    outfile.write((char*)&a,sizeof(a));
    outfile.close();
    fstream infile("file.dat".ios::binary|ios::in);
    while(infile.read((char*)&a,sizeof(a)))
    cout<<a<<' ';
    infile.close();

    read函数要求第一个参数为字符型指针,(char*)&a 强制将变量a的地址转换为字符型指针

     2.3 常见输出流的成员函数

    2.3.1 put()函数 输出单个字符的成员函数

    a.标准输出//以引用方式返回调用该函数所使用的输出流对象,支持连续调用

    char ch='a';
    cout.put(ch);
    cout.put('b').put('c')<<endl;
    

    b.文本文件输出

    char ch='a';
    fstream outfile("file.txt",ios::out)
    outfile.put(ch);
    outfile.close();

    2.3.2 write()函数  用于输出多个字符的成员函数write(),输出流对象可调用此函数向输出设备输出多个指定个数的多个字符的操作

    a. 标准输出流 write(字符型指针,字节数n)

    char*ch="一带一路 协同共进";
    cout.write(ch,8).put('\n');
    cout.write(ch,strlen(ch))<<endl;

    b. 二进制文件输出

    int a=12345;
    fstream outasc("file.txt",ios::out);
    fstream outbin("file.dat",ios::binary|ios::in);
    outasc<<a;
    outbin.write((char*)&a,sizeof(a));
    outbin.close();
    outasc.close();
    //file.txt 文件内容12345,5个字节
    file.dat 文件内容 39300000 四个字节 二进制数对应为0x00003039
    #include<iostream>
    #include<fstream>
    using namespace std;
    struct Student//将三名学生的信息存入二进制文件后,再读到结构体数组中,输入到屏幕上
    {
    char num[10];
    char name[20];
    int score;
    };
    int main()
    {
    Student stu[]={
    {"101","张三”,89},
    {"102","李四",91},
    {"103","王五",85}
    };
    fstream outfile("info.dat",ios::binary|ios::out);
    for(int i=0;i<3;i++)
    outfile.write((char*)&stu[i],sizeof(stu[i]);
    outfile.close();
    fstream infile("info.dat",ios::binary|ios::in);
    for(int i=0;i<3;i++)
    infile.read((char*)&stu.[i],sizeof(stu[i]);
    cout<<stu[i].num<<stu[i].name<<stu[i].score<<endl;
    infile.close();
    return 0;
    }
    

    展开全文
  • c++输出日志的 方法

    2018-11-05 13:30:15
    c++输出日志的 方法,c++输出日志的 方法,c++输出日志的 方法
  • 但是对于其他类型的指针,C++将其对应于void*,并将其地址打印出来。所以,如果想要打印字符串的地址,将其指针强制转换成其他类型的指针即可,如下: using std::endl; using std::wcout; setlo...

    C++用字符串存储位置的指针来表示字符串,指针的形式可以是数组、wchar_t(char)指针。

    但是对于其他类型的指针,C++将其对应于void*,并将其地址打印出来。所以,如果想要打印字符串的地址,将其指针强制转换成其他类型的指针即可,如下:

            

            using std::endl;
            using std::wcout;
            setlocale(LC_ALL, "");
    
            wchar_t strArr[6] = L"锄禾日当午";
            wchar_t* pStr = L"汗滴禾下土";
            wcout << strArr << endl;  //打印的都将是字符串
            wcout << pStr << endl;
            wcout << (void*)pStr << endl;  //想打印地址,必须强制转换成非字符串指针
    
            int* pValue = new int(10);
            wcout << pValue << endl;  //打印的是地址
            delete pValue;
            pValue = nullptr;

     

    打印结果:

    展开全文
  • C++基础之C++中的输入输出

    千次阅读 2022-04-24 14:48:40
    目录 文章目录 前言 一、输入输出流 二、c++输入输出语句 1.标准输入设备 2.标准输出设备 3.原理 三、iostream类库
  • C++ 中如何输出函数的地址

    千次阅读 2021-03-08 21:40:08
    C++ 中如何输出函数的地址 #include <iostream> void hello() { } int main(int argc, char *argv[]) { std::cout << hello << std::endl; std::cout << &hello << std::...
  • C++输入数字 逆向输出

    2018-04-02 11:23:32
    C++输入数字逆序输出,自己编写的,代码没有什么问题,想要探讨下的同学可以下载下来研究一下
  • C++输出二进制

    千次阅读 2022-01-21 17:10:04
    #include<iostream> #include<bitset> using namespace std;//必须得加上 int main() { int a=1000; cout<<"默认下"<<a<<endl; cout<<"十进制"<<... .
  • (详解)c++输入输出运算符重载

    千次阅读 2021-12-12 17:11:45
    对比输入输出流重载,因为输入输出流的使用对象只能是cout或者cin,所以咱们无法再创建别的输出输出流对象,而直接用编译器给的cout和cin。(结合下面对那行代码分析理解) 在上面代码的main函数中,详细分析下下面...
  • C++学习——c++输入输出(二)

    千次阅读 2022-03-23 13:51:40
    文章目录C++前言一、标准输出流(cout)二、标准输入流(cin)总结 前言 万物皆可C++ 一、标准输出流(cout) 预定义的对象 cout 是 iostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是...
  • C++ 输入输出函数

    千次阅读 2021-01-04 11:37:11
    要使用输入输出函数,首先要: #include <iostream> using namespace std; C++使用一个预处理器,该程序在进行主编译之前对源文件进行处理,它处理以#开头的编译指令,不必执行任何特殊的操作来调用该预...
  • C++如何输入/输出

    2022-05-05 12:51:33
    C++有两种方式输入/输出,分别是C++风格的iostream和C风格的stdio,其实没什么不同 先来介绍第一种,iostream 头文件:iostream(#include<iostream>) iostream输出的写法:cout<<你要输出的变量1的...
  • C++输出字符型指针地址

    千次阅读 2020-10-21 16:02:25
    因此,我们用static_cast强制类型转换把字符串指针转换成无类型指针即可输出指针地址 #include<iostream> using namespace std; int main() { char *p="abc"; cout << p << endl;//"abc" ...
  • C++ 输入输出精讲

    2016-12-05 16:38:17
    关于c++输入输出文件的用法的具体介绍
  • C++输入输出

    千次阅读 2022-01-27 23:00:32
    文章目录C++输入scanf(): 从键盘(标准输入)读取数据 C++输入 scanf(): 从键盘(标准输入)读取数据 #include <iostream> using namespace std; int main() { int a; scanf("%d", &a); //...
  • C++输入流和输出流(超级详细)

    千次阅读 2022-02-13 09:31:32
    C++输入流和输出流(超级详细) C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案:...
  • C++在VS输出窗口显示调试信息,C++在VS输出窗口显示调试信息,将C++的调试信息在VS的“输出”窗体上显示,便于调试跟踪。
  • C++语言的输入输出.ppt
  • 一文搞懂C++输入输出流,从此不再陌生。 cin.get(),cout.put(). cin.getline(),cout.write()讲解
  • C++ ACM模式输入输出

    千次阅读 多人点赞 2021-12-30 23:29:04
    C++ ACM模式输入输出 以下我们都以求和作为题目要求,来看一下各种输入输出应该怎么写。 1 只有一个或几个输入 输入样例: 3 5 7 输入输出模板: int main() { int a, b, c; // 接收有限个输入 cin >> a...
  • C++:输入输出

    千次阅读 2022-03-13 15:12:27
    前言:介绍C++基础内容:类型、变量、表达式、语句及函数; 适合:零基础小白 参考书录:C++primer 1,第一个C++程序:不做任何事 int main() { return 0; } (1)每个C++程序都包含一个或多个函数(function...
  • c++中用cout输出字符串变量地址,代码: char var[] = "zhoujinxing"; cout << var << endl; cout << &var << endl; cout << var[0] << endl; cout << &...
  • C++ 指针输出

    2022-03-06 14:50:59
    cout<<*p<<endl;//输出指针地址中储存的值 cout<<p<<endl;//输出指针地址 类作用域/命名空间作用域 :: 地址操作符 &
  • C++实现简单的文件输入输出

    千次阅读 2022-03-18 20:10:09
    这样的输入输出有时候不能满足要求,这个时候需要我们读写文件来获得、存储我们的数据。 读文件或者写文件 大致分为5个步骤 包含头文件(fstream)-创建流-打开文件,使文件和流建立联系-读写操作-关闭文件 流的...
  • C++--标准输入输出

    2022-04-14 17:13:05
    4.C++有一个新的输入输出流库(头文件iostream)将输入输出看成一个流,并用输出运算符 << 和输入运算符 >> 对数据(变量和常量进行输入输出)。 其中 cout 和 cin 分别代表标准输出流对象(屏幕窗口)和标准...
  • C++输入输出运算符的重载

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,070,693
精华内容 428,277
关键字:

c++输出地址

c++ 订阅