1. 第一行输入字符串长度n;
2. 第二行输入字符串A;
3. 第三行输入字符串B;
4. 最后将AB交叉合并成C;
用string做:
#include<iostream>
using namespace std;
int main() {//输入长度为n的字符串;
string A, B; char c;
int n;
cin >> n;//输入长度
cin.get();
for(int i = 0; i < n; i++){
cin >> c;
A.push_back(c);
}
while (cin.get() != '\n');//清空输入流中多余的字符
for (int i = 0; i < n; i++) {
cin >> c;
B.push_back(c);
}
string C;//
for (int i = 0; i < n; i++) {
C.push_back(A[i]);
C.push_back(B[i]);
}
cout << "C:";
for (auto x : C) {
cout << x ;
}
system("pause");
}
用char[]做:
#include<iostream>
using namespace std;
//输入长度为n的字符串;
int main() {
int n;
cin >> n;//输入数组长度;遇到换行符 空格 tab就完成输入
cin.get();//读取并丢掉换行符
char* A = new char[n+1];
char* B = new char[n+1];
char* C = new char[2*n+1];
cin.getline(A, n+1 );//cin.getline每次读取一行,以换行符来确定行尾,但不保留换行符[A:目标数组(字符串);n+1:表示字符串长度(包括'\0'),末尾自动添加'\0']
cin.getline(B, n+1 );
int j = 0;
for (int i = 0; i < 2 * n; i++) {
C[i++] = A[j];
C[i] = B[j++];
}
C[2*n] = '\0';
for (int i = 0; i < 2 * n+1;i++)cout << C[i];
system("pause");
}
cin.getline(name,Arsize)//name为目标数组,Arsieze:数组长度(不保留换行符)
**上面的这句代码作用相当于下面两句**
cin.get(name,Arsize)//name为目标数组,Arsieze:数组长度(保留换行符)
cin.get();//读取并丢掉换行符
若实用cin.get(name,Arsize)则编译器知道是要将一个字符串放入数组,因而使用适当的成员函数
若使用的是cin.get()则编译器知道是要读取一个字符————————函数重载