我正在尝试调试一些功课,但我遇到了这些代码行的问题
#include "stdafx.h"
#include<conio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
char word;
cout << "Enter a word and I will tell you whether it is" << endl <<
"in the first or last half of the alphabet." << endl <<
"Please begin the word with a lowercase letter. --> ";
cin >> word;
if(word[0] >= 'm')
cout << word << " is in the first half of the alphabet" << endl;
else
cout << word << " is in the last half of the alphabet" << endl;
return 0;
}
我收到以下错误,我不知道它的含义是什么
error C2109: subscript requires array or pointer type
答案 0 :(得分:6)
术语下标指的是[]
运算符的应用。在word[0]
中,[0]
部分是下标。
内置[]
运算符只能与数组或指针一起使用。您正尝试将其与char
类型的对象一起使用(您的word
声明为char
),它既不是数组也不是指针。这就是编译器告诉你的。
答案 1 :(得分:1)
而不是
char word;
声明
string word;
您已经包含了字符串类标头。然后,您可以使用[] -operator访问元素。
补充说明:为什么使用conio.h?它已经过时,不属于C ++标准。
答案 2 :(得分:1)
另一个建议:将输出文本声明为一个实体,然后阻止写入。这可以使您的程序更容易调试,阅读和理解。
int main(void)
{
static const char prompt[] =
"Enter a word and I will tell you whether it is\n"
"in the first or last half of the alphabet.\n"
"Please begin the word with a lowercase letter. --> ";
string word;
cout.write(prompt, sizeof(prompt) - sizeof('\0'));
getline(cin, word);
cout << word;
cout << "is in the ";
if(word[0] >= 'm')
cout "first";
else
cout << "last";
cout << " half of the alphabet\n";
return 0;
}
供您参考(FYI):
stdafx.h
不是标准标头
而不是小项目所必需的。conio.h
不是标准标头
并不是简单的控制台所必需的
I / O。string
代替文字
char *
。答案 3 :(得分:0)
单词被声明为char
,而不是数组。但是你正在使用word[0]
。