0

<string>ライブラリを .cpp ファイルの先頭に含めていますが、テストすると

 cout<<myString.at(myString.length());

文字列の最後の文字を出力する必要があります。少なくとも、そうすべきだと思います。しかし、私のコンパイラはヒッシーフィットをスローし、私にたくさんの専門用語を吐き出します.

私は JavaScript での記述に慣れているため、ルールを使用することに慣れていないため、文字列の最後の文字を返すことは完全に理にかなっています。

4

5 に答える 5

7

文字列インデックスはゼロから始まるため、[0..myString.length()-1] を実行します。使用する必要があります

myString.at(myString.length()-1);

最後の文字を取得するには

于 2013-09-03T17:34:48.853 に答える
2

そのはず

cout <<myString.at(myString.length()-1 );

文字列インデックスは 0 ベースであるため、文字列 "hello" は 0 から 4 までのインデックスと長さ 5 を持ちます。

#include <string>
#include <iostream>

using namespace std;

int main(){
  string myString = "hello";
  cout << myString.at(myString.length()-1 ); //outputs "o"

}

デモ: http://codepad.org/QxwrjpIt

于 2013-09-03T17:34:58.687 に答える
1

名前空間を含めましたstdか?

また、ゼロベースのインデックス作成を考慮して、長さよりも 1 少なくする必要があります

std::cout<<myString.at(myString.length()-1);

于 2013-09-03T17:34:59.613 に答える
0

文字列は配列としてインデックス付けされているため... length() の位置が範囲外です。

使用する必要がありますlength() - 1

完全な例:cout << myString.at(myString.length() - 1);

于 2013-09-03T17:35:16.347 に答える