作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
/* Write a program that would mix-and-merge two given strings (s1 and s2) into string s3 as follows:
first character of s1, first character of s2, second character of s1, second character of s2, etc. */
我在互联网上找到了这个示例练习,我想我会试一试。一切似乎都很好,代码编译没有错误,但我的“s3”字符串变量不会输出任何内容,它只会保持空白。
说来有趣,但问题似乎出在return 0之前的最后一行;
cout << s3;
如果我这样做:
cout << s3[0];
或者我想要的任何索引,当运行与其他字符串连接的代码时,它将显示正确的字符。那么问题是什么?此处代码供引用:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string s1, s2, s3;
int i;
int j = 0;
cout << "Type in the first string: ";
getline(cin, s1);
cout << "Type in the second string: ";
getline(cin, s2);
for(i = 0; j < s1.size(); i += 2) // Merge first string by starting at index 0 and moving in 2s hence i += 2.
{
s3[i] = s1[j];
++j;
}
j = 0;
for(i = 1; j < s1.size(); i +=2) // Merge second string by starting at index 1 hence i + 1 and again moving in 2s as to not overwrite an index that s1 put in.
{
s3[i] = s2[j];
++j;
}
cout << s3; // Problem is here?
return 0;
}
最佳答案
使用大于当前长度的运算符 [i]
访问 s3
字符串是未定义的行为。
您可以在循环之前尝试使 s3
足够大(例如填充空格)。请注意,您当前的实现仅在两个字符串长度相同时才有效。
或者,尝试想出不同的方法。例如如果您将字符串 s1
和 s2
放在您面前的小叠纸上(每张纸上有一个字母)并想要合并它们,您会这样做成一个堆栈。
关于c++ - 为什么在将 2 个字符串逐个字母连接到第三个字符串时,最终字符串不会显示正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495097/
我尝试在 d3.js 中进行链式转换。为此,我在数组中定义了一组转换,并(尝试)创建一个函数以使用 .each("end", function()) 递归调用它们,以在前一个为完成,但我还没有结果。
我是一名优秀的程序员,十分优秀!