键; p10=键[0]+键[2]+键[4]+键[1]+键[3]; cout,c++,string,permutation,C++,String,Permutation" /> 键; p10=键[0]+键[2]+键[4]+键[1]+键[3]; cout,c++,string,permutation,C++,String,Permutation" />

以特定排列方式连接字符串的字符 我试图编码一个C++程序,它使用5个字符的长字符串,然后用这个顺序打印出一个新的字符串:第一个字符,第三个字符,第五个字符,第二个字符,第四个字符。我的代码如下: #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; } #包括 #包括 #包括 使用名称空间std; int main() { 字符串键; 字符串p10; cout>键; p10=键[0]+键[2]+键[4]+键[1]+键[3]; cout

以特定排列方式连接字符串的字符 我试图编码一个C++程序,它使用5个字符的长字符串,然后用这个顺序打印出一个新的字符串:第一个字符,第三个字符,第五个字符,第二个字符,第四个字符。我的代码如下: #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; } #包括 #包括 #包括 使用名称空间std; int main() { 字符串键; 字符串p10; cout>键; p10=键[0]+键[2]+键[4]+键[1]+键[3]; cout,c++,string,permutation,C++,String,Permutation,这里的问题是,当你在一个字符串上使用[]时,你不会得到另一个字符串,而是一个char。一个char实际上只是一个小整数(想想字符码),如果使用+运算符,则会将数字相加。最终会产生或多或少的随机字符代码,这就是为什么会出现希腊字母 如果要使代码的结构尽可能接近原始结构,可以使用substr获取“一个字符串”,而不是普通的chars: key.substr(0, 1) + key.substr(2, 1) + ... 1表示需要从指定偏移量中提取一个字符 另一种方法是首先用字符构造字符数组,然后将

这里的问题是,当你在一个字符串上使用
[]
时,你不会得到另一个字符串,而是一个
char
。一个
char
实际上只是一个小整数(想想字符码),如果使用
+
运算符,则会将数字相加。最终会产生或多或少的随机字符代码,这就是为什么会出现希腊字母

如果要使代码的结构尽可能接近原始结构,可以使用
substr
获取“一个字符串”,而不是普通的
char
s:

key.substr(0, 1) + key.substr(2, 1) + ...
1
表示需要从指定偏移量中提取一个字符

另一种方法是首先用字符构造字符数组,然后将其转换为字符串:

char p10_arr[] = { key[0], key[2], ... };
string p10(arr, sizeof(arr));
也许最好、最简洁的方法是使用初始值设定项列表语法:

string p10 { key[0], key[2], ... };

string键;
不应该是
char[]KEY;.CODE >?太棒了。谢谢。我做到了。我以前从来没有尝试过C++上的字符串操作。谢谢解释,更合理!最后一个方法,最好的和最简洁的一个,显示了打开的括号上的语法错误,说它期望分号?@ BBLO:这可能是由于过时或配置错误的C++编译器造成的,初始值设定项列表语法是在C++11中添加的。您可能需要单独告诉编译器启用C++11功能或对其进行升级,或同时进行升级。我查看了如何执行此操作。看起来我需要使用VS 2012才能使其正常工作。