c# - c++ - 使用 std 命名空间和依赖项

标签 c# c++ c++11

在尝试熟悉 C++ 及其概念时,我遇到了

using namespace std

#include <iostream>

我的简单代码如下

#include "stdafx.h"
#include "ConsoleApplication5.h"
#include <iostream>     

int main()
{
    std::cout << "hi";
    return 0;
}

使用使用 intellisense 的 Visual Studio 2015 Community 显示

cout

使用以下内容

std::ostream std::cout

作为一名 C# 程序员,这让我有些困惑。这是:

std::ostream

作为返回类型而

std::cout

是传递的方法/参数还是

std::ostream

依赖于

cout

更新(在 Archimaredes 回答之后)

在 C# 中,可以使用以下内容:

StreamWriter srWrite;

StreamWriter srWrite = new StreamWriter(string filepath)

或者可以使用:

StreamWriter srWrite = new StreamWriter(new NetworkStream(Socket.GetStream()));

每例一个对象类型即

StreamWriter

可分配给新对象或现有文件或网络流。

在你提到的(请原谅 C# 心态)之后,我用 std::ostream x = new std:ostream 尝试了相同的方法,它返回一个无默认构造函数。

您能否添加 std::ostream 和 std::cout 如何相互关联,从而创建/初始化另一个。这个概念对我来说还是有点模糊。

最佳答案

std::cout 是全局范围内的对象,类型为 std::ostream .当您调用 std::cout << "hi" , 你正在调用 operator<<() 方法与 std::cout对象作为您的左手值和字符串文字 "hi"作为右边的值。

coutostreamstd里面命名空间,因此是 std::字首。如果你放置 using namespace std在您的代码中,这允许您省略前缀,例如

#include <iostream>
using namespace std;

int main() {
    cout << "hi"; // no error because the 'std' is unnecessary now
}

命名空间用于防止名称冲突,与 C# 完全相同; 使用 using namespace 通常是个好习惯整个源代码文件的指令,以防止代码中的名称冲突。


根据 OP 的更新进行编辑

std::coutstd::ostream实例 .为了说明这一点,请考虑以下内容:

class A_Class {
public:
    A_Class() {}
    void foo() {}
};

int main() {
    A_Class an_instance;
    an_instance.foo();
}

A_Class是一个类,而 an_instanceA_Class 的实例.

同样; ostream是一个类,而 coutostream 的实例.


根据 OP 的评论进行编辑

这可能会让 C# 用户感到困惑,但它与以下概念完全相同:

int n = 5;

在哪里int是类型,n是变量名。

关于c# - c++ - 使用 std 命名空间和依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037637/

相关文章:

c# - 如何使用 Wpf、MVVM 获取图像像素位置和 RGB 值?

c++ - 如何在cpp和c中不使用cout/printf输出文本?

c++ - QTreeView 清除选择如果选择的项目被过滤

C++ 元编程 : Store integer by type

C++ 数组衰减不会发生以供引用,为什么?

c++11 - 所有权和 setter/getter

c# - HiddenFor 应该尊重 DisplayFormat 吗?

c# - 在 asp.net-mvc 中捕获每个用户的页面浏览量的最佳方法是什么

C# 等效的 java 代码

c# - 如何将 native 窗口处理程序 (HWND) 嵌入到 C# WPF 应用程序中