在两个函数中使用相同的变量

时间:2013-05-07 11:15:27

标签: c++ function

我有两个函数read()write()。我在read()函数中读取了一个文件,并在变量的标题中存储了一行。现在我希望write()函数将同一行写入新文件。但是,我如何使用来自其他函数的相同变量或信息?这样做的方法是什么?

以下是有关代码的一些信息:

包含必要的文件后,它会说明

HX_INIT_CLASS(HxCluster,HxVertexSet);

该类的名称是HxCluster,如果有人能告诉我为什么我们不能以简单的方式定义类,那就太棒了:class class_name {};

我有很多功能,其中两个是read()write()。它们都只采用一个参数,即在相应的情况下要读取的文件和要写入的文件。我不知道为此编写代码是否有用。

5 个答案:

答案 0 :(得分:5)

如果我理解得很好,这就是C ++中结构/类/对象的用途。例如:

class FileLineWriter
{
public:
    FileLineWriter();

    void read(istream& inputfile);
    void write(ostream& putfile);

private:
    string line_of_text;
};

void FileLineWriter::read(istream& s)
{
    // s >> this->line_of_text; // possible, but probably will not do what you think
    getline(s, this->line_of_text);
}

void FileLineWriter::read(ostream& s)
{
    s << this->line_of_text;
}

...
FileLineWriter writer;
writer.read(firstfile);
writer.write(secondfile);

请注意,上述内容不是正常工作的代码。这只是一个样本。您将必须修复所有拼写错误,缺少名称空间,标题,添加流开/关/错误处理等。

答案 1 :(得分:1)

从read中返回变量并将其作为要写入的参数传递。像这样的东西

std::string read()
{
   std::string header = ...
   return header;
}

void write(std::string header)
{
   ...
}

std::string header = read();
write(header);

在函数之间传递信息是学习的基本C ++技能。

答案 2 :(得分:0)

如果我理解了这一点,那么我建议你将变量的信息保存到字符串或int中,具体取决于它是什么类型的信息。

我还建议我们总是包含一些代码,以便能够为您提供更多帮助

答案 3 :(得分:0)

你可以写一个参数,void write(std::string text)或者你可以将你读到的字符串作为全局变量std::string text存储在.cpp文件的顶部,text = ...读取函数(用ifstream替换...或者你使用的任何东西),然后在你的写函数中写text

答案 4 :(得分:-3)

当然, 使用指针!

void main(){
  char* line = malloc(100*sizeof(char));
  read_function (line);
  write_function (line);
}

void read_function(char* line){
  .... read a line
  strcpy (line, the_line_you_read_from_file);
}

void write_function (char* line){
  fprintf (fp,"%s", line);
}