比较 c++ 中的字符数组
Comparing char array in c++
我需要 c++ 方面的帮助。我想比较字符数组。所以,我做了一些编码。不幸的是,它总是出现错误。我无法运行它。在这里,我附上了代码。请帮我修复此代码。我想检查结论是否等于句子 1,那么它是无效的,但如果它不等于句子 1,那么它是有效的。请帮帮我。谢谢。
int number;
char sentence[number];
char rules[50];
char statement[50];
char premis1[100];
char premis2[100];
char conclusion[100];
cout<<"How many sentence you want to insert:";
cin>>number;
cout<<endl;
for(int i=0; i<number; i++)
{
cout<<"Enter sentence ";
cout<<i+1;
cout<<":";
cin>>sentence[i];
cin.ignore();
}
cout<<"Enter premis 1:";
cin.getline(premis1,100);
cin.ignore();
cout<<"Enter premis 2:";
cin.getline(premis2,100);
cin.ignore();
cout<<"Enter conclusion:";
cin.getline(conclusion,100);
cin.ignore();
for(int i=0;i<number;i++)
{
if(strcmp(conclusion,sentence[0],)==0)
{
cout<<"Statement is invalid."<<endl;
cout<<endl;
}
else if(strcmp(conclusion,sentence[0])!=0)
{
cout<<"Statement is valid."<<endl;
}
else
cout<<"exit"<<endl;
}
您在程序中犯的错误:
- 您从未初始化过
number
但在sentence[]
中使用,即使在number
的声明之后它仍然无效,这是因为编译器必须知道要定义的数组长度的确切值。 - 您已经将
sentence
定义为 char 数组,但从您的代码来看,您似乎想将一个完整的句子存储到数组的每个元素中,这是不可能的。在此处使用std::string
。 - 您正在对 char 数组的第一个字符执行
strcmp()
,而不是带有结论的句子。
旁白:请不要忘记包含代码中常见的重要头文件,我们必须假设您的程序不完整,因为它缺少main()
和语句,例如strcmp(...,...',' - incomplete)
。
重新设计了程序(请注意,这里使用了using namespace std
语句,因为它只是一个演示的小程序,为了简单起见,到处都去掉std::
前缀(:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(void) {
int number = 0;
vector<string> sentence;
string tempSentence;
string conclusion;
cout << endl;
cout << "How many sentences you want to insert? ";
cin >> number;
for (int i = 0; i < number; i++) {
fflush(stdin);
cout << "Enter sentence " << (i + 1) << ": ";
getline(cin, tempSentence);
sentence.push_back(tempSentence);
}
cout << "Enter conclusion: ";
getline(cin, conclusion);
if (conclusion == sentence[0])
cout << "The statement is invalid." << endl;
else if (conclusion != sentence[0])
cout << "The statement is valid." << endl;
else
cout << "EXIT" << endl;
return 0;
}
我在这里std::vector<>
了std::string
,在每次迭代(从#include <vector>
开始(以动态方式给出的定义数量的句子中插入单个字符串,并使用std::string
而不是char arr[]
,在这里很容易比较字符串。
示例输出:
$ g++ -o prog prog.cpp; ./prog
How many sentences you want to insert? 3 // --- INPUT
Enter sentence 1: This is the first sentence.
Enter sentence 2: This is the second sentence.
Enter sentence 3: This is the third sentence.
Enter conclusion: This is NOT the first sentence.
The statement is valid. // first sentence != conclusion // --- OUTPUT
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?