C ++简介,我被淹没了

时间:2018-10-05 06:49:46

标签: cygwin codeblocks ifstream getline ofstream

我刚刚在星期一开始了C ++课程的介绍,我完全不了解我的意思。首先,他们告诉我要安装Crimson编辑器和Cygwin(以编译文件):

绯红色编辑器不允许我做任何事情(所有选项似乎都变灰了)。

Cygwin的相似之处在于,我可以从批处理文件中打开命令提示符(按照提供给该类的教程文件的指示),但是我无法从那里进行任何操作。我已经寻求帮助,但尚未收到回复,所以我决定看看是否可以在线找到帮助。

遇到这些问题后,建议我使用网上的其他代码块,这些代码块我一直都很好用。我的第一个问题是,当需要编译/调试文件时,代码块会成为一个问题(他们已经指出,对于每个作业,每个提交都应包含一个makefile,一个makedebug,并将按照以下条件进行标记:

  

标记方案

     

您将根据以下条件进行评分:

     

程序编译无错误20%
  正确执行程序20%
  C ++程序正确性和样式20%
  计划文档20%
  测试计划20%
  总计100%

不幸的是,他们还没有向我们介绍过很多这样的概念(我希望他们在第一部分结束时不久就可以介绍它们(他们曾说过,我们应该能够完成第一个分配代码4的程序)。

这使我们进入下一期。我正在尝试使用while(getline())进行练习,但是遇到了一些问题(同样,我在编程语言方面有将近0的经验,并决定参加这门课程,因为它本来是入门课程。有趣的是,“虽然”这个概念将在本课程的稍后部分介绍,但幸运的是,我从在线视频中对它有了非常基本的了解)。以下是我尝试运行的代码:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{

    string docName;
    cout<<"What is the file name you would like to open?"<<endl;
    cin>> docName;

    string s, line;
    ifstream in (string docName);

    while (getline(in, line))
        s+=line+"\n";
    cout << s;

    return 0;
}

这里有一个错误,我不确定为什么会收到此错误。另外,我在完全理解类似于以下三个方面的代码时遇到了一些问题:

getline()

ifstream in()

andofstream out()

作为字符串的介绍,他们使用了代码:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ifstream in("Scopy.cpp");
    ofstream out("Scopy2.cpp");
    string s;
    while(getline(in, s))
        out<<s<<"\n";
    return 0;
}

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ifstream in("FillString.cpp");
    string s, line;
    while(getline(in,line))
        s+= line + "\n";
    cout<< s;
}

您可能了解到,我对这一切有点不知所措。我要到第一部分的结尾,他们说我们应该能够完成作业:

  

编写一个程序来打开文件并计算该文件中用空格分隔的单词。

     

编写一个程序来打开一个(文本)文件,并一次一行显示该文件的内容。显示一行后,程序应等待用户按下键,然后在文件中显示下一行。

     

编写一个程序,该程序使用两个嵌套的for循环和模数运算符(%)检测并打印1到10,000之间的质数。 (素数是自然数,除了它们自己和一个数之外,不能被其他任何数均分)。显示找到的所有素数。

     

编写一个程序,该程序创建一个包含100个字符串对象的数组。通过让程序打开一个(文本)文件并在每个字符串中读取文件的一行来填充数组,直到填充完数组为止。使用“ line#:”格式显示数组,其中#是实际的行号(您可以使用数组计数器作为该值),并且是存储的字符串。

有人可以用外行的术语解释这些吗? (实际上,我一直在关注NewBoston的C ++教程,该教程非常有用,但是我很期待这些教程的介绍位置,尽管我正在教程20中,这就像他将近10个小时的入门视频中的3个小时一样,但在教程68 ...相当一段时间了。

1 个答案:

答案 0 :(得分:1)

第一个建议:我的印象是您的老师正在从中汲取灵感和一些代码

Bruce Eckel撰写的C ++中的思想,第二版,第1卷

从这里可用:

https://www.mindviewllc.com/quicklinks/
https://archive.org/details/TICPP2ndEdVolOne

我建议你阅读它;我发现很好地解释C ++的概念

第二个建议:Cygwin带有一个Cygwin Terminal图标。使用它启动bash命令解释器。还要确保安装gcc-g++软件包来编译代码。

来自编译器的错误消息告诉您它不匹配 getline的参数:

$ g++ prova0.cpp -o prova0
prova0.cpp: In function ‘int main()’:
prova0.cpp:17:30: error: no matching function for call to ‘getline(std::ifstream (&)(std::string), std::string&)’
     while (getline (in, line ) )
                              ^

代码中的问题在这里

 ifstream in (string docName);

您要在其中定义流in
与其他代码进行比较

ifstream in("Scopy.cpp");

string这个词太多了。