【问题标题】:Unable to print the string (C++)无法打印字符串 (C++)
【发布时间】:2018-03-11 05:06:06
【问题描述】:

将一个字符串的每个值都分配给另一个字符串后,我无法打印该字符串。如何克服这个问题

#include <bits/stdc++.h>

using namespace std;

int main()
{
  int n, k;
  string s = "Nikhil", shiftedS;
  n = s.length();
  cin >> k;

  for (int i = 0; i < n; i++)
  {
    int idx = (i + k) % n;
    shiftedS[idx] = s[i];
  }
  shiftedS[n] = '\0';

  for (int i = 0; i < n; i++)
    cout << shiftedS[i] << " ";
  cout << shiftedS; // I am unable to print when I try like this.

  return 0;
}

【问题讨论】:

  • 访问索引 &gt;= s.length() 处的元素是未定义的行为。
  • 另外——C++ 字符串不会特别对待\0
  • #include 使用命名空间标准; int main() { string s="Nikhil",shiftedS;整数 n,k; k=s.length(); cout>k; for(int i=0;i
  • 转换字符串的字符
  • 那你必须先resize它。另外 -- edit 如果您想添加更多信息,请提出问题。

标签: c++ string c++14


【解决方案1】:

因为shiftedS 是一个空字符串,所以您会遇到不可预知的行为。如果你这样初始化它

string shiftedS(n, ' ');    // n is equal to length of "Nikhil"

并摆脱shiftedS[n] = '\0';(C++ 字符串对象不需要这个),它应该可以按预期工作。我对这些更改进行了尝试,它对我有用。

【讨论】:

    【解决方案2】:

    你为什么不这样尝试

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    int n,k;
    string s="Nikhil",shiftedS = "";
    n=s.length();
    cin>>k;
    for(int i=0;i<n;i++)
    {
        int idx=(i+k)%n;
        shiftedS+=s[i];
    }
    cout<<shiftedS;
    return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多