C ++使用getline,输出在开头带有一个额外的空间

c++ using getline, output comes with an added space at the beginning

本文关键字:有一个 空间 开头 使用 getline 输出      更新时间:2023-10-16

我使用 getline 读取带有空格的数据,我反转它。 但它会返回添加的空间。您可以看到下面的代码。

#include <iostream>
#include <string>

using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
string s;
getline(cin, s);
for (int i = s.length(); i >= 0; i--) {
cout << s[i];
}
return 0;
}

当我进入时:aaa 它回馈:AAA

首先添加的空间。

如何解决这个问题?

i等于字符串长度时,访问s[i]是未定义的行为,因为它已经过了字符串的末尾。

通过更改for循环起始子句进行修复。

for (int i = s.length() - 1; i >= 0; i--) {
相关文章: