1. ホーム
  2. c++

[解決済み] エラー C2109: 添え字には配列またはポインタ型が必要です。

2022-02-07 03:47:24

質問

私はある宿題をデバッグしようとしているのですが、以下のコード行に問題があります。

#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

解決方法は?

もう一つの提案は、出力テキストを一つの実体として宣言し、書き込みをブロック化することです。 これにより、プログラムのデバッグ、読み、理解が容易になる可能性があります。

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)。

  1. stdafx.h は標準のヘッダーではありません。 であり、小規模なプロジェクトでは必要ありません。
  2. conio.h は標準のヘッダーではありません。 であり、単純なコンソールでは必要ありません。 I/Oを行います。
  3. 優先する string よりも、テキスト用の char * .