我正在尝试编写一个带有5个字符长字符串的C ++程序,然后用这个顺序打印出带有新排列的字符串:第一个字符,第三个字符,第五个字符,第二个字符,第四个字符。我的代码如下:
#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)都是一个随机的希腊字母。
请帮忙!
答案 0 :(得分:2)
这里的问题是,当您在字符串上使用[]
时,您不会返回另一个字符串,而是一个char
。 char
实际上只是一个小整数(想想字符代码),如果你使用+
运算符,它会将数字加在一起。你最终会得到一个或多或少的随机字符代码,这就是为什么你会得到希腊字母。
如果您希望保持代码结构尽可能接近原始结构,可以使用substr
来获取“一个字符串”而不是普通char
:
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], ... };