为啥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;
这是我的程序,谢谢,帮忙看一下,很急!
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输出字符串的主要内容,如果未能解决你的问题,请参考以下文章