Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的简单文件写入功能+;_C++ - Fatal编程技术网

C++ C+中的简单文件写入功能+;

C++ C+中的简单文件写入功能+;,c++,C++,我有以下代码: // basic file operations #include <iostream> #include <fstream> using namespace std; int main() { writeFile(); } int writeFile () { ofstream myfile; myfile.open ("example.txt"); myfile << "Writing this to a file

我有以下代码:

// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    writeFile();
}

int writeFile () 
{
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

这只是一个简单的函数。我正在使用Visual Studio 2010。

您需要声明
writeFile
函数的原型,然后才能实际使用它:

int writeFile( void );

int main( void )
{
   ...

您的
main
不知道
writeFile()
并且无法调用它


writefile
移动到
main
之前,或声明
int writefile()
main
之前有两种解决方案。您可以将该方法置于调用该方法的方法之上:

// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int writeFile () 
{
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

int main()
{
    writeFile();
}
//基本文件操作
#包括
#包括
使用名称空间std;
int writeFile()
{
流文件;
myfile.open(“example.txt”);

MyFrase

切换函数的顺序或进行WreWrFrm函数的前向声明,我想它会起作用。

< P>这是C++有一个奇怪规则的地方。在能够编译函数之前,编译器必须知道函数名、返回值和所有参数。 这可以通过添加“原型”来实现。在您的情况下,这只是意味着在
main
之前添加以下行:

int writeFile();
这告诉编译器存在一个名为
writeFile
的函数,该函数将在某处定义,它返回一个
int
,并且不接受任何参数

或者,您可以先定义函数
writeFile
,然后定义
main
,因为在这种情况下,当编译器到达
main
时,已经知道您的函数

请注意,这种提前知道被调用函数的要求并不总是适用的。例如,对于内联定义的类成员,它不是必需的

struct Foo {
    void bar() {
        if (baz() != 99) {
            std::cout << "Hey!";
        }
    }

    int baz() {
        return 42;
    }
};
structfoo{
空条(){
如果(baz()!=99){

代码中似乎缺少函数声明int writeFile();std::cout。
在函数主体()/< p>之前,为什么你在写C++代码的时候添加了<代码> c>代码>标签?我知道,有这么多语言,所以它不是公共静态空洞主体()和公共无效函数名…………嗯,有趣的是函数,而不是方法(类成员函数)。“代码>静态代码/代码>可以用于一个函数,这意味着它将是文件的私有。注意,你不能为<代码>主< /COD>这样做。当然,没有公开概念。公共的和私有的:这些说明符只能应用在C++中的类内。这里,你没有类。只是Fu。nctions,在顶层。@RowMinds:与Java和C#相比,这很奇怪。如果你来自一种更程序化的语言,那么main是
public
static
的概念绝对是外来的。我明白了,有这么多语言,所以它不是public static void main()和public void functionName()…嗯,很有趣…把main()放在末尾的那部分很搞笑为什么把main函数放在末尾是“搞笑的”?而
publicstaticvoidmain()到底是什么?
?这与什么有什么关系?@Row注意到,这里的基本思想是,当你调用writeFile()时从main开始,函数writeFile还没有被声明,因此出现了上述解决方案。如果我不得不猜测的话,我会说它之所以好笑是因为它是20XX,我们仍然使用一种无法解析声明的语言,然后在单独的扫描中读取定义。我不觉得好笑,因为我理解为什么它不可能是任何其他的w我只是哭了。“朱兰:我想你是说<代码> MyFrite我理解,但是这是一个奇怪的规则……想想任何语言都有很多奇怪的规则,该死……”Roo介意:C++不是一个干净的白页设计的结果,而是来自一个甚至经过委员会的进化史。不幸的是,在很多地方,结果是令人惊讶的,显然是不合逻辑的。这也意味着你不能相信你的直觉,当你学习C++时,你必须学习它。它是一个很好的有力的语言,但是它充满了奇怪的规则(通常是因为历史原因)。我知道C++是旧的,但它是严肃的C++语言:C++是低级语言,主要的设计选择之一是保持足够的接近金属,以使汇编语言上没有其他语言的空间。许多人认为C++失败了(因为C通常被用来代替低级部分的C++)。但是这个决定影响了很多设计。C是一种高级语言,所以比较这两种语言是没有道理的。每个人在某些方面比较好;如果你只需要C是什么好的,那么就去C。“C通常被用来代替C++的低级部分”->旧C很老,我根本不使用它。
struct Foo {
    void bar() {
        if (baz() != 99) {
            std::cout << "Hey!";
        }
    }

    int baz() {
        return 42;
    }
};