我想编写一个函数来输出ostream
传入的内容,并返回流,如下所示:
std::ostream& MyPrint(int val, std::ostream* out) {
*out << val;
return *out;
}
int main(int argc, char** argv){
std::cout << "Value: " << MyPrint(12, &std::cout) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印这样的值会很方便,并将函数调用嵌入到输出操作符链中,就像我一样main()
.
但它不起作用,打印出来:
$ ./a.out
12Value: 0x6013a8
Run Code Online (Sandbox Code Playgroud)
期望的输出是这样的:
Value: 12
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我是否必须定义一个operator<<
?
更新:澄清了所需的输出.
更新2:有些人不明白为什么我会打印这样的数字,使用函数而不是直接打印它.这是一个简化的例子,实际上该函数打印的是复杂的对象而不是int
.
我需要非常快速地使用C++(我之前从未使用过它) - 通过Visual Studio(即托管C++)学习是否有用?或者我最终会在VS中学习C++的扩展和特性,而不是语言本身?
如果不建议在VS中学习,你们建议使用什么平台/ IDE?
编辑:在编写非托管C++时,有人可以详细说明VS将为我隐藏或管理的内容吗?我真的需要学习像指针,垃圾收集和低级语言的所有细节之类的东西.. VS是否抽象或隐藏任何这类东西给你?
感谢所有的建议..
我正在使用PHP CURL向服务器发送请求.我需要做什么才能使服务器的响应包含该服务器的IP地址?
这些URL之间是否有关于在URL末尾添加斜杠的区别?
https://drchrono.com/about_us
https://drchrono.com/about_us/
Run Code Online (Sandbox Code Playgroud)
Web框架和Web服务器(例如Apache,Nginx,Django)是否以不同方式处理这些请求?
我已经找到大量示例来使用正则表达式替换文件中的文本.然而,它归结为两个版本:
1.迭代文件中的所有行并将regex应用于每一行
2.加载整个文件.
第2号使用"我的"文件是不可行的 - 它们大约是2GiB ......
至于第1号:目前这是我的方法,但是我想知道......如果需要应用跨越多个的正则表达式怎么办?线?
我从VB中学到的很多东西都是从静态代码分析(特别是Aivosto的项目分析器)中学到的.它检查的一件事是你是否清除了所有对象和数组.我曾经盲目地这样做,因为PA这么说.但是现在我对VB释放资源的方式了解得更多,在我看来,这些事情应该自动发生.这是VB6之前的遗留功能,还是有理由将对象显式设置为空,并在阵列上使用Erase?
SocketImplFactory的javadoc特别提到"通过更改创建套接字实现的套接字工厂,应用程序可以自行配置以创建适合本地防火墙的套接字."
但是,为了连接到有问题的防火墙,需要一个真正的套接字来进行真正的连接.替换了默认的SocketImplFactory,如何获得真正的套接字?
我知道在Java的Java上可以使用java.net.PlainSocketImpl和java.net.SocksSocketImpl,但有没有什么方法可以在JVM之间移植?
我正在使用MSVC++,我想在我的代码中使用特殊值INFINITY.
MSVC++中无限使用的字节模式或常量是什么?
为什么1.0f/0.0f似乎值为0?
#include <stdio.h>
#include <limits.h>
int main()
{
float zero = 0.0f ;
float inf = 1.0f/zero ;
printf( "%f\n", inf ) ; // 1.#INF00
printf( "%x\n", inf ) ; // why is this 0?
printf( "%f\n", zero ) ; // 0.000000
printf( "%x\n", zero ) ; // 0
}
Run Code Online (Sandbox Code Playgroud) 我经常读到可读性和可维护性的重要性.或者,我阅读了关于哪些语法功能不好或好的非常强烈的意见.或者讨论某些范式的价值观,比如OOP.
除此之外,每当我读到有关主观问题的关于SO或Meta的辩论时,同样的问题在我脑海中浮现.或者阅读有关最佳实践的问题,有时会发现自己或其他人不同意.
主观性在编程领域中扮演什么角色?
有时候我认为它起着很大的作用.软件开发人员在某种程度上是工程师,也是人.编程的很大一部分是处理人类可读的代码.这与数学或物理学或其他具有非常精确和结构化规则的学科非常不同.在这里,确切的结构和规则大部分都在空中,随心所欲地变化,因此存在的语言数量.一个人可能会发现一种语言非常易读,而另一个人可能会发现他们自己的语言最令人欣慰.
与实践相同.一个人可能不喜欢某些公认的做法.我自己发现将类分成不同的文件是非常难以理解的.
但是,我不能说规则一般没有帮助.某些做法已经并确实使生活更轻松.新语言产生了语法和结构,使生活更轻松.即使给了一大批不同的人群,代码也很容易阅读和维护.所以也许这些事情并不像我想象的那么主观.
在某种程度上,它让我想起了UI设计.当然这是主观的,但是有一个完整的学科参与制作良好的用户界面,它往往有效.
对于可维护性,可读性和其他最佳实践背后的想法,是否存在一些非主观的内容?当一个人开发新语言或想到新的实践时,有什么东西可以掌握吗?
假设我有一个文件Xh,它定义了一个类X,其方法在X.cc中实现.文件Xh包含一个文件Yh,因为它需要Y来定义类X.在X.cc中,我们可以引用Y,因为Xh已经包含了Yh我是否还应该在X.cc中包含Yh?
我知道我不需要,我可以依靠标题保护来防止多重包含.但一方面,包括Yh使得X.cc更加独立于Xh(当然不能完全独立).什么是公认的做法?
另一个例子:包括<iostream>
.h和.cc文件.我看到有些人这样做,有些则没有.
c++ ×4
.net ×1
apache ×1
c# ×1
curl ×1
django ×1
header-files ×1
include ×1
infinity ×1
ip-address ×1
java ×1
large-files ×1
managed-c++ ×1
ostream ×1
outputstream ×1
php ×1
regex ×1
sockets ×1
url ×1
vb6 ×1
vba ×1
visual-c++ ×1
webserver ×1