gpt4 book ai didi

c++ - 如何在不使用 variable_name.at() 的情况下引用字符串的最后一个字符?

转载 作者:行者123 更新时间:2023-11-27 23:12:55 27 4
gpt4 key购买 nike

我目前正在使用的代码如下所示:

if ((text.at(text.size() -1 ) != '!' ) && (text.at(text.size() -1 ) != '?') && (text.at(text.size() -1 ) != ':' ) && (text.at(text.size() -1 ) != ',' ) && (text.at(text.size() -1 ) != ';' ) && (text.at(text.size() -1 ) != '=' ) )

它的细节并不是特别重要,但我基本上是在尝试制作一种只使用命令提示符的文字处理器,每当用户在输入缓冲区中没有任何内容的情况下按下 enter 时,程序就会关闭,因为它是以“一种不寻常的方式”终止,我的意思是这行代码试图引用字符串中不存在的位置,即 -1。所以我需要一种新方法来引用给定字符串变量中的最后一个字符,该变量仍然可以与给定的代码行一起使用。感谢您的帮助!

最佳答案

在访问其元素并使用 std::string::rbegin 之前,您应该检查 text 是否为空或 std::string::back(needs C++11)来简化你的代码。

你这样调用它:

if (!text.empty())
{
char c = *text.rbegin();
if (c != '!' &&
c != '?' &&
c != ':' &&
c != ',' &&
c != ';' &&
c != '=' )
{
}
}

为了增强代码的可读性,你可以在这种情况下引入一个局部变量,复制一个 char 的成本很低,你可以大大缩短你的 if 语句。

关于c++ - 如何在不使用 variable_name.at() 的情况下引用字符串的最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com