string.at if 语句不返回任何内容
string.at if statement doesn't return anything
如果末尾没有句点,我正在尝试在输入的字符串中添加一个句点。
#include<iostream>
#include<string>
using namespace std;
int main() {
cout<<"Type somethingn";
string input;
getline(cin, input);
string period = ".";
if (input.at(input.length()) == period.at(1)) {
cout<<"you entered"<<input;
} else {
cout<<"you entered"<<input<<".";
}
}
它应该添加一个句点,但最终什么也没打印。有人知道为什么会这样吗?
您要求它输入位置 1
的字符,这是第二个字符,因为索引从零开始。但只有一个角色!
您在==
的另一边也有同样的问题.
这两种情况都会触发异常。
无论如何,您不需要字符串来进行该比较。我会这样做:
const char delimiter = '.';
if (!input.empty() && input.back() == delimiter)
...
或者,坦率地说,直接进行比较:
if (!input.empty() && input.back() == '.')
...
这已经不言自明了。
相关文章:
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 为什么套接字中的 recv() 函数不返回任何内容?
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- C++如何使虚拟函数返回任何类型的指针
- 返回类型为struct的函数每次调用时都不返回任何内容
- 此程序不返回任何内容
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- std::ifstream.read() 不会向我的缓冲区返回任何内容
- 为什么即使输入相等,v3 也不会返回任何内容
- glGetBufferSubData() 不返回任何数据?
- stbi_load() 不返回任何内容,但不返回 null
- C++ 中是否有任何内置阶乘函数?
- 如何处理不保证返回任何内容的函数
- C++递归不返回任何内容
- MySQL++ 不返回任何内容
- stbi_load不返回任何值
- 是否有任何内置函数可以告诉编译器分支是否可预测