大家好日子。
我的代码编译过程存在问题。我已经在我正在使用的IDE(Codeblocks)中测试了我的代码,其中testfile.txt位于包含11个单词的同一目录中。我100%肯定我的文本文件不是问题,因为我已经让程序运行完美没有问题。出现的问题是,当我尝试使用Cygwin64(我在64位计算机上)编译我的代码时,它会抛出此错误,我已在下面进行了总结。
代码
#include <iostream>
#include <string>
#include <fstream> // need for opening file
using namespace std;
int main (){
string filename = "testfile.txt"; // setting our pre-default test file
ifstream file(filename); // open file
string words; // initialize variable
int wordcount = 0 ; // word count set at 0
/* The operator >> skips only leading whitespace.
/It stops extracting when it reaches the end of all words in the file
// for every iteration add one to word count. display results.
*/
while(file >> words)
{
++wordcount;
}
cout<< "The number of words inside the file is : "<<wordcount<<endl;
return 0;
}
我收到的错误如下:
$ g++ -o oTMA1Question1 TMA1Question1.cpp
TMA1Question1.cpp: In function 'int main()':
TMA1Question1.cpp:92:13: error: no match for 'operator>>' (operand types are 'std::ifstream() {aka std::basic_ifstream<char>()}' and 'std::string {aka std::basic_string<char>}')
while (file >> words)
^
然后它列出了来自cygwin库的候选人。
在阅读此错误后,我已使用Codeblocks在不同的文件夹中重新运行/重建此代码,并且代码可以正常运行。但是,当我创建一个新文件并执行相同的过程(即使用cygwin进行编译)时,我得到了确切的错误。
我不太明白为什么操作数出现“&gt;&gt;”匹配问题 - 如果我是正确的,这是“输入”的一般标志,所以在while(文件&gt;&gt;单词)应该是“当文件遍历文字时......”。任何有助于我理解这个问题的帮助都会非常感激。