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

标签 c++

我使用 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]undefined behaviour , 因为它超过了字符串的末尾。

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

for (int i = s.length() - 1; i >= 0; i--) {

关于c++使用getline,输出在开头带有一个额外的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389304/

相关文章:

c++ - 分配顺序与初始化顺序

c++ - 函数返回值和右值引用绑定(bind)

c++ - 递增指针

c++ - 如何检查矩阵中每一行/列的相等性?

C++ Python导入类;调用方法

c++ - main中的非可移植const

c++ - 删除指针后将指针设为空是一种好习惯吗?

C++ OpenCV : Convert mat to base64 and vice versa

c++ - 构造函数符号的双重发射

C++ : pointers change?