私はC++でいくつかのコードを書いていました。ある点(44行目:cout << commands_help[i];
)には、「添え字付きの値は配列ではありません」というエラーがあります...実際には配列ではなくリストを使用していました...関数 "help()"ではすべての項目の間にリストcommands_help
の各項目を\n
で印刷します。どうしたらいいですか?サブスクリプトされた値が配列ではありません(エラー)
コード:
#include <iostream>
#include <list>
#include <fstream>
using namespace std;
ifstream file;
// variables and arrays
string shell_symbol;
bool get_texture(){
file.open("UsedTexture.txt", ios::in);
if (file.is_open()){
file >> shell_symbol;
file.close();
return true;
} else {
cout << "unable to open file";
file.close();
return false;
}
}
list<string> commands_help = {
"'help' ________________ Display this help page.",
"'[command] info' ______ Display command purposes.",
"'datetime' ____________ Can show date, time and calendar.",
"'exit' ________________ Quit the MiSH."
};
long help_size = commands_help.size();
// functions/commands
int help() {
int i = 1;
commands_help.sort();
while (i < help_size) {
if (i < commands_help.size()){
cout << commands_help[i];
} else {
break;
}
}
}
int main() {
if (get_texture()) {
string inp1;
cout <<
"\nThis is the MiSH, type 'help' or '?' to get a short help.\nType '[command] help' to get a detailed help.\n";
while (true) {
cout << shell_symbol;
cin >> inp1;
if (inp1 == "help" || inp1 == "?") {
help();
} else if (inp1 == "exit") {
break;
} else {
}
}
}
return 0;
}
あなたは[] ''のstdと '演算子を使用することはできません。 :list'。たぶん、あなたは 'std :: vector'を試してみたい、あるいはwhileの代わりにイテレータに基づいて' for'を使いたいかもしれません。 – tforgione
'std :: list'から[' std :: vector'](http://en.cppreference.com/w/cpp/container/vector)に切り替えます。 'std :: vector'は常にデフォルトのコンテナです。リストはここで意味をなさない、あなたが気づいたように、あなたはリストでサブスクリプションを使用することはできません。 –
また、配列と同様に、ベクターはゼロでインデックスを開始します。 –