为啥c++中无法用cout输出字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥c++中无法用cout输出字符串相关的知识,希望对你有一定的参考价值。

void sc(txl *p)

while(p->next!=NULL)

p=p->next;
cout<<"姓名为:"<<endl<<(p->name)<<endl;
cout<<"电话为:"<<endl<<(p->number)<<endl;
cout<<"学号为:"<<endl<<(p->xh)<<endl;


这是我的程序,谢谢,帮忙看一下,很急!

用cout输出字符串是可以的。大前提是当前名空间需要是std。即代码中使用了

using namespace std;
或者单独声明使用cout,即代码中有
using std::cout;
否则需要使用
std::cout进行输出。

在C++中有两种字符串的概念。
1 string 类对象字符串。需要使用std名空间,或者声明使用std::string。
定义时string s1 = "string";
输出时cout<<s1;即可。
2 字符数组。
C语言中字符串以字符数组形式存储,并约定以\\0作为结束符。
当定义char s2[100] = "char array"; 时,输出时使用
cout << s2;
参考技术A while(p)


cout<<"姓名为:"<<endl<<(p->name)<<endl;
cout<<"电话为:"<<endl<<(p->number)<<endl;
cout<<"学号为:"<<endl<<(p->xh)<<endl;
p=p->next;

参考技术B 使用cout和cin必须调用头文件
#include"iostream"
using namespace std;
参考技术C 头文件写没写错?命名空间有没有声明?最容易犯的错误就是这两个了。最好把程序全发上来。还有,编译器有没有说错误? 参考技术D C++的标准输出流就是cout,你的用法也是对的!
是不是没有使用作用域说明:using namespace std;?
你给个完整的程序,或者把错误原因发一下?

用 c++ 输出,为啥?

【中文标题】用 c++ 输出,为啥?【英文标题】:Output in c++ and why?用 c++ 输出,为什么? 【发布时间】:2014-09-11 13:23:29 【问题描述】:

代码

#include<iostream>
using namespace std;


int &fun()

    int x = 10;
    return x;

int main()

    fun() = 30;
    cout << fun();
    return 0;

输出将是 10,告诉我 int x = 10 如何以及何时更改为静态 int x = 10 输出将是 30。解释这两种情况。

【问题讨论】:

这个措辞几乎就像一个面试问题(如果是,IMO 就不是一个很好的问题)。 我会说一个家庭作业问题。 ***.com/questions/8610350/… 为什么不通过执行代码来确定输出? 输出将是 10 不是真的。 【参考方案1】:

这是未定义的行为。您正在返回对一个局部变量的引用,该变量的生命周期在函数结束时结束。

g++ 对这段代码的处理非常有趣:

-O0,它打印10

-O1,它打印30

-O2-O3,它打印0

如果将x声明为static,则它具有静态存储持续时间,这意味着它的生命周期不会在函数返回时结束,这意味着返回对它的引用是合法的。所有对foo 的调用都将返回对相同int 的引用。

【讨论】:

以上是关于为啥c++中无法用cout输出字符串的主要内容,如果未能解决你的问题,请参考以下文章

C++中cout<<字符数组名;为啥能输出字符串?

c++怎么用cout输出字符串?

关于C++用cout输出字符串

C++中关于string类型究竟能不能用cout输出的问题

c++如何用cout将自己的类直接输出为字符串

在c++中如何用cout输出整个字符数组