【发布时间】:2018-09-10 16:37:29
【问题描述】:
我之前一直在使用 Python 进行编程。我一直在尝试在 C++ 中复制类似的方法。
我打算做什么:通过“cin”从用户那里获取案例“N”的数量,并为每个案例输入一个字符串“str”。遍历字符串“str”的每个索引,将偶数索引位置的元素一起打印,后跟一个空格,然后是奇数索引位置的元素。
我想要实现的一个示例是: 用户输入:航空 输出:Arnuis eoatc
下面显示的程序是我的 C++ 代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N;
cin>>N;
for(int i=0; i < N; i++){
string str;
cin>>str;
string even;
string odd;
for(int j=0; j < str.size(); j++){
if (j % 2 == 0){
even.append(str.at[j]);
}
else if (j % 2 != 0){
odd.append(str.at[j]);
}
cout<<even<<" "<<odd<<endl;
}
}
return 0;
}
当我尝试运行上述代码时,下面显示的错误消息是直接从我的编译器获得的:
solution.cc: In function ‘int main()’:
solution.cc:20:37: error: invalid types ‘<unresolved overloaded function type>[int]’ for array subscript
even.append(str.at[j]);
^
solution.cc:23:36: error: invalid types ‘<unresolved overloaded function type>[int]’ for array subscript
odd.append(str.at[j]);
^
据我所知,编译器说我不能以这种方式将字符串的索引元素附加到另一个字符串。我试图在其他论坛上搜索为什么在 C++ 中不可能做到这一点,但无法得到答案。你能告诉我为什么吗?
【问题讨论】:
-
试试
even.append(str[j]);。 -
它应该是 at(),而不是 at[]
-
我尝试了 () 和 []。他们都给我编译时错误。我相信问题出在其他地方!
-
我建议包括
<string>