C++ 如何纠正这些c++;错误';无效转换';和';运算符'不匹配;
我试图通读包含一系列单词和句子的文件。 然后,需要存储唯一的单词,并保持每个不同单词的计数。如果有多个单词,则应通过减少计数对单词进行排序 按字母顺序排列,数量相同的单词。(此订购可通过以下方式实现: 在最后,我想输出排序列表中的第一个和最后十个单词,以及它们的计数 如何修复此C++ 如何纠正这些c++;错误';无效转换';和';运算符'不匹配;,c++,binary-search-tree,C++,Binary Search Tree,我试图通读包含一系列单词和句子的文件。 然后,需要存储唯一的单词,并保持每个不同单词的计数。如果有多个单词,则应通过减少计数对单词进行排序 按字母顺序排列,数量相同的单词。(此订购可通过以下方式实现: 在最后,我想输出排序列表中的第一个和最后十个单词,以及它们的计数 如何修复此常量字符*错误。我不知道我的代码中有什么错误,或者我在哪里以及我到底需要更改什么: [错误]从“char”到“const char*”的转换无效[-fppermissive] [错误]与“运算符”不匹配 这就是您的错误行的
常量字符*
错误。我不知道我的代码中有什么错误,或者我在哪里以及我到底需要更改什么:
[错误]从“char”到“const char*”的转换无效[-fppermissive]
[错误]与“运算符”不匹配
这就是您的错误行的外观(无论您对代码的意图是什么,我只看了3个bug)
此比较函数解决第一个和第二个编译错误:
#include <string>
bool Compare(WordType &A, WordType &B)
{
if (A.count < B.count)
return true;
if (A.count > B.count)
return false;
std::string w1{ Words[A.word] }, w2{ Words[B.word] }; // Fix
return (strcmp(w1.c_str(), w2.c_str()) < 0);
}
-
除此之外,我更喜欢使用std:array
&初始化变量:
#include <array>
struct WordType
{
int word = 0;
int len = 0, count = 0;
};
constexpr int MaxWords = 50000;
std::array<char, MaxWords * 10> Words;
std::array<WordType, MaxWords> Counters;
int NumWords = 0;
// & to call in main():
Words.fill('\0');
#包括
结构字类型
{
int字=0;
int len=0,count=0;
};
constexpr int MaxWords=50000;
std::数组字;
std::数组计数器;
int NumWords=0;
//要在main()中调用(&T):
字。填充('\0');
关于错误有什么不清楚的地方Words[A.word]
是一个char
,而strncpy
期望第二个参数是const char*
。我不知道现在的编译器会精确地说明它们遇到的错误。2) 要修复错误,需要知道您对所述代码的意图。你的意图,用这样的代码是不清楚的。除了引用的使用,这是C,而不是C++,因为它被标记。没有理由复制你的比较函数中的字符串。
#include <string>
bool Compare(WordType &A, WordType &B)
{
if (A.count < B.count)
return true;
if (A.count > B.count)
return false;
std::string w1{ Words[A.word] }, w2{ Words[B.word] }; // Fix
return (strcmp(w1.c_str(), w2.c_str()) < 0);
}
if (Compare(Counters[j], pivot)) // Fix
#include <array>
struct WordType
{
int word = 0;
int len = 0, count = 0;
};
constexpr int MaxWords = 50000;
std::array<char, MaxWords * 10> Words;
std::array<WordType, MaxWords> Counters;
int NumWords = 0;
// & to call in main():
Words.fill('\0');