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 - 1获取最后一个字符。

std::cout << myString.at(myString.length()-1) << std::endl;
于 2013-09-03T17:36:13.823 回答
0

因为字符串被索引为数组...... length() 的位置超出了界限。

你应该使用length() - 1

完整示例:cout << myString.at(myString.length() - 1);

于 2013-09-03T17:35:16.347 回答