在特定排列中连接字符串的字符
Concatenating characters of a string in a specific permutation
我正在尝试编写一个C++程序,该程序使用一个5个字符长的字符串,然后按以下顺序打印出具有新排列的字符串:第1个字符、第3个字符、5个字符、2个字符、4个字符。我的代码如下:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string key;
string p10;
cout << "Enter the five characters long string: ";
cin >> key;
p10 = key[0] + key[2] + key[4] + key[1] + key[3];
cout << p10 << endl;’
system(“pause”);
return 0;
}
每次运行时,输出(p10)都是一个随机的希腊字母。
请帮忙!
这里的问题是,当您在一个字符串上使用[]
时,您不会返回另一个字符串,而是返回一个char
。char
实际上只是一个小整数(想想字符代码),如果将+
运算符与它们一起使用,它会将这些数字相加。你最终会得到一个或多或少随机的字符代码,这就是为什么你会得到希腊字母。
如果你想让代码的结构尽可能接近原始代码,你可以使用substr
来获得"一个字符串",而不是普通的char
s:
key.substr(0, 1) + key.substr(2, 1) + ...
1
表示您希望从指定的偏移量中提取一个字符。
另一种方法是首先用字符构造一个char数组,然后将其转换为字符串:
char p10_arr[] = { key[0], key[2], ... };
string p10(arr, sizeof(arr));
也许最好、最简洁的方法是使用初始值设定项列表语法:
string p10 { key[0], key[2], ... };
相关文章:
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 尝试将字符串/字符转换为整数会产生意外结果
- 为什么没有访问所有字符串字符?
- 将子字符串字符从字符串值转换为 int,然后将其分配给 int 变量
- 如何将字符串字符与结构数组进行比较?
- 将单个字符串/字符输入串行监视器
- 读取字符串字符时出错 - 对于数组中的字符串值
- C++ C 样式字符串/字符数组的大小 - 优化
- 读取字符串字符时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 如何将 int 数组的 1 个元素转换为字符串/字符
- 在另一个字符串中逐个复制字符串字符
- 将字符串字符映射到矢量
- MBED RTOS将Float转换为字符串/字符阵列
- 如何使用字符串字符数组中的 ++ 运算符访问下一个字符串
- 如何比较C++中的单个字符串字符?
- 内部字符串/字符如何在 int 和 float 中存储
- 将十六进制转换为可打印的字符串/字符
- wcscpy_s后读取字符串字符时出错
- 检查字符串字符和长度