如果末尾没有一个数字,我正在尝试在输入的字符串中添加一个句点。
#include<iostream>
#include<string>
using namespace std;
int main() {
cout<<"Type something\n";
string input;
getline(cin, input);
string period = ".";
if (input.at(input.length()) == period.at(1)) {
cout<<"you entered"<<input;
} else {
cout<<"you entered"<<input<<".";
}
}
原本应该添加一个句点,但最终什么也没打印。有人知道为什么会这样吗?
答案 0 :(得分:4)
您要求它在位置1
处的字符,它是 second 字符,因为索引从零开始。但是只有一个字符!
在==
的另一端,您遇到相同的问题。
这两种情况都会触发an exception。
无论如何,您不需要字符串进行比较。我会这样做:
const char delimiter = '.';
if (!input.empty() && input.back() == delimiter)
...
或者,坦率地说,直接进行比较:
if (!input.empty() && input.back() == '.')
...
这很不言自明。