cout为什么输出不了string!

P1914 小书童——凯撒密码

Hey_System @ 2016-09-29 13:46:03

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;

int main()
{
    int n;
    string m,ans;

    cin>>n>>m;

    for(int i=0;i<m.size();i++)
    {
        if(m[i]+n>122)
            m[i]=m[i]+n-26;

        else ans[i]=m[i]+n;
    }

    cout<<ans;

    return 0;
}

没有提示错误,ans里面也有字符,就是什么都没有输出


by Hey_System @ 2016-09-29 13:54:50

暂时不看是不是对的。就是

1 qwe 这个数据都无法输出


by Hey_System @ 2016-09-29 13:59:09

后来改进之后AC了

但是cout直接输出string的问题没有解决

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
    string m,ans;

    cin>>n>>m;

    for(int i=0;i<m.size();i++)
    {
        if(m[i]+n>'z')
            ans[i]=(m[i]+n)%122+96;

        else ans[i]=m[i]+n;
    }

    for(int i=0;i<m.size();i++)
        cout<<ans[i];

    return 0;
}

by 约修亚_RK @ 2016-09-29 14:09:29

你看看ans.size(),它储存的这个字符串的长度是0.

把ans[i]=...改成ans.push_back(...)就好了。

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    int n;
    string m, ans;
    cin >> n >> m;
    for (unsigned int i = 0; i < m.size(); i++) {
        ans.push_back((m[i] + n > 'z') ? ((m[i]+n) % 122 + 96) : (m[i] + n));
    }
    cout << ans; 
    return 0;
}

by 阿也 @ 2016-10-02 14:26:30

C++尽量避免使用字符串,建议改用字符数组


by Toxic_Obsidian @ 2016-10-18 13:00:40

然而我用char str[256];

然后int a=strlen(str);

最后再计算就行了

#include <iostream>
#include <stdio.h>
#include <string.h>
int main()
{
    char str[256];
    int mov;
    std::cin>>mov>>str;
    int a=strlen(str);
    for(int i=0;i<=a-1;i++)
    {
        if(mov+(int)str[i]>122) str[i]=(char)(mov+(int)str[i]-26);
        else str[i]=(char)(mov+(int)str[i]);
    }
    std::cout<<str;
}

by Moreland @ 2016-10-24 20:08:50

没有必要用string定义函数吧


|