📜  C++ string.at()函数(1)

📅  最后修改于: 2023-12-03 14:59:47.346000             🧑  作者: Mango

C++ string.at()函数介绍

C++的string类提供了许多方便的方法来操作字符串。其中,at()函数是一个很有用的方法,它可以用来访问字符串中某个位置的字符。

语法

char& at (size_t pos);

该函数接受一个size_t类型的参数pos,表示要访问的字符在字符串中的位置。如果该位置合法(即不超过字符串的长度),则返回该位置的字符(如果该位置的字符是可修改的,会返回一个引用,可以直接修改该字符);如果超出了字符串的长度,则会抛出一个out_of_range异常。

示例

下面是一个使用at()函数的示例代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str = "hello world";
    
    // 访问字符串中的第5个字符
    cout << str.at(4) << endl;
    
    // 修改字符串中的第6个字符
    str.at(5) = '_';
    cout << str << endl;
    
    // 尝试访问超出字符串长度范围的字符
    try {
        char ch = str.at(100);
        cout << ch << endl;
    } catch (out_of_range e) {
        cout << "Error: " << e.what() << endl;
    }
    
    return 0;
}

上面的代码输出结果为:

o
hello_world
Error: basic_string::at: __n (which is 100) >= this->size() (which is 11)
注意事项

虽然at()函数比operator[]函数更安全(即可以检查越界),但它的效率相对较低。一般来说,在循环中访问字符串的时候,应该尽量使用operator[]操作符,而不是at()函数,以提高效率。

此外,由于at()函数返回的是引用(可以修改字符),因此如果需要保持字符串的不变性,应该使用const引用来调用该函数。例如:

const string& str = "hello";
char ch = str.at(0);  // 该调用是合法的,因为使用了const引用
//str.at(0) = 'H';  // 该调用是不合法的,因为字符串是常量