Cout 一个字符串可以打印任何内容到屏幕上
cout a string aint printing anything to the screen
这是一个简单的字符串操作问题。将字符串中的每个字符向右移动 2 个位置。
我使用第二个字符串将字符从第一个字符串复制到第二个字符串中的所需位置。但是 cout 不会打印第二个字符串。如果我尝试像注释中那样打印字符串,它可以工作。 为什么cout<<dups
不起作用?
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
string dups;
cin>>s;
int k;
cin>>k;
for(int i=0;s[i];i++)
{
int idk = (i+k)%6;
dups[idk] = s[i];
}
dups[6] = ' ';
cout<<dups;
/*for(int i=0;dups[i];i++)
cout<<dups[i]; */
}
输入:黑客 2 输出:厄哈克
首先,没有打印任何东西。 如果我喜欢评论,它可以工作。
你到处都有未定义的行为,因为你默认初始化了你的字符串(零大小(和越界访问:
string dups;
一种解决方法是
string s;
cin>>s;
string dups = s;
如果我喜欢评论,它可以工作。
执行此操作时,您可能已成功写入某个内存位置:
string dups; // dups.size() == 0 after this
...
dups[idk] = s[i]; // You write to memory you don't "own".
在提取数据时,您可以像这样检索相同的数据:
for(int i=0;dups[i];i++)
cout<<dups[i]; // dups.size() is still 0
但它只是看起来有效。您写入的内存可能会被几乎任何东西覆盖,因此您不能指望它为您提供正确的结果。程序的行为是未定义的。任何事情都可能发生。
您可以通过调整大小来修复它,当您知道它需要包含多少个字符时dups
:
cin>>s;
dups.resize(s.size());
相关文章:
- 如何在同一行内打印和返回?
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 如何在方括号内打印整个数组,而不是打印每个值?
- 当我在循环内打印变量时无限输出
- C++ 中是否有任何内置阶乘函数?
- 在向量内打印地图
- 是否有任何内置函数可以告诉编译器分支是否可预测
- 我的任务是在框架内打印一个字符串,例如一个正方形
- 我需要在C /C#中使用图形.我可以使用任何内置的C /C#库
- 是否有任何内置类可以处理C 中的大整数值
- 该程序不会在任何地方打印系统日志?
- 如何在700毫秒内打印出巨大的矩阵
- c ++中是否有任何内置功能可以在计划的时间运行任务
- 是否有任何内置的 UTF 在 c++ 在窗口中
- 在VC++2010中执行任何内置的ARRAY函数
- 如何在向量内的结构内打印指向整数的数组
- C++:如何在不使用任何内置函数的情况下将字符串转换为整数
- 是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?
- C++ -- 为什么"什么"在捕获范围内打印"未知异常"?