【问题标题】:How do i read a visual studio file using filing and store the input as a word file [closed]我如何使用归档读取 Visual Studio 文件并将输入存储为 Word 文件 [关闭]
【发布时间】:2020-01-17 08:19:27
【问题描述】:

我实际上试图做的是读取包含 Visual Studio 项目的整个文件夹,然后读取 .cpp 文件扩展名和 .cs 扩展名,并以某种方式将所有复制的信息存储到一个单词和/或文本文件中。 我已经知道我必须使用办公自动化将其存储到 word 文件中。 问题出现了,我将如何读取 .cpp 文件,因为 fstream 无法为我识别 .cpp

我想复制到文本或文字文件的示例 cpp 文件

'''

int main()
{
a =2; 
b=3;}

'''

作为 .txt 或 .word 的输出文件应该有这个单词到单词

【问题讨论】:

  • 您已经尝试过什么来解决您的问题?请向我们展示您的相关minimal reproducible example
  • C++ 文件流根本不关心文件的名称或包含的内容。他们不“识别”任何东西。
  • 我使用异常处理来查看文件是否首先打开,这就是我的意思是无法识别,如果我将扩展名更改为 .txt,它会毫无问题地打开。跨度>
  • .cpp 和 .cs 文件文本文件。因此,您应该能够在 shell 脚本(或批处理脚本或 powershell;例如 cmd:type *.cs > allcs.txt)中连接它们。这样做对我来说毫无意义。只是出于好奇:你想做什么?
  • 你真的应该考虑更好的选择,比如用这些文件创建一个 zip 文件。

标签: c# c++ .net visual-studio


【解决方案1】:

您不必使用办公自动化。或者更确切地说,这取决于您需要支持的 Office Fromat。从 C#/.NET 使用 Office 格式时有 3 种基本情况:

  • 您只需要支持新格式,例如 docx。您可以使用OpenXML SDK,它周围的任何包装器。甚至只是 XMLWriter 和 ZipArchive 类。

  • 如果您也需要支持旧格式,唯一的方法是 (T)rusty office COM 互操作。它具有 COM 互操作的所有常见限制,需要安装 office,并且只能在交互式会话中运行

  • 对于任何非常具体的问题、任何特定格式和任何特定 GUI 技术的组合,可能有第 3 种方式。

我推荐 OpenXML 方式。事实上,jsut 用 .doc 告诉他们这是不可能的,或者需要 10 倍的时间和要求。这是一个公平的评估。

但是,这整个操作听起来也大写错误。这要么是一个非常糟糕的管理决策,要么是您大量误读了需求。我真的想不出一个案例,这甚至是遥不可及的。这是在“打印出源代码”级别的坏主意。

【讨论】:

    【解决方案2】:

    事实证明,因为我和我的朋友都在从事这个项目,显然我的 f 流库已“损坏”或出现问题,所以重新安装了库(在我的情况下,重新安装 Visual Studio 解决了这个问题,现在我可以读取 .cpp 文件和所有其他扩展名,而我以前无法这样做)

    这是我使用文件系统命名空间从整个目录中读取和过滤 cpp 文件的示例代码

    string check_file_extension(string file_p = "C/Desktop")
    {
        // a function used to get the file extention
    
    
    
        return file_p.substr(file_p.length()-4); // gets the last 4 charecters of the file path mentioned , utilized later to check extention in main
    }
    
    void OpenandSaveFile(string file_p = "Null")
    {
        // a function used to save and retrive file data 
        // utilizes f stream
    
        ifstream file_obj;
        string out_put;
        file_obj.open(file_p);
        while (!file_obj.eof())
        {
    
            file_obj >> out_put;
            cout << out_put;
    
        }
        file_obj.close();
    
    
    }
    
    
    string path;
    cout << "Please enter your file path " << endl;
    cin >> path;
    
    
    for (const auto & entry : fs::directory_iterator(path)) // gets the entire list of files in the specified directory
    {
        string curr_file = entry.path().string();
        cout << entry.path() << endl;
        if (check_file_extension(curr_file) == ".cpp")
        {
            OpenandSaveFile(curr_file);
        }
    }
    

    这不会写入文件,但此时读取足够,以防其他人遇到类似问题

    也感谢克里斯托弗,我知道他们让我把它写到一个字面上没有任何意义的 word 文件中,但我知道这是非常愚蠢的;c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 2014-04-04
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2016-04-06
      相关资源
      最近更新 更多