string extract(string scrambeledword){
unsigned int index;
string output;
string input= " ";
for (index=0; index <= scrambeledword.length() ; index++);
{
if (index%2==0)
{
output+=input ;
cout << output;
}
}
return output;}
我想从用户输入的40个字母长的单词中提取偶数索引的字母。这有意义吗?我还没有采用数组,也不想包含它们。
答案 0 :(得分:3)
问题:
1.在;
循环后有一个for
,循环主体永远不会运行。
2. <=
在这里是错误的,因为scrambeledword.length()超出范围。请改用!=
或<
。
3.您需要先为input
分配一些内容,然后再将其添加到输出中,或者完全删除它。
4.正如@Aconcagua指出的,值得注意的是,我从函数作用域中删除了index
的声明,并将其仅添加到了for
循环作用域中。如果您还考虑这样做,则编译器将引发错误(因为在for
范围之外未声明该错误),因此您会注意到;
问题。
固定版本:
string extract(const string &scrambeledword){ // copying strings is expensive
// unsigned int index; // obsolete
string output;
// string input= " "; // obsolete
for (size_t index = 0; index != scrambeledword.length(); ++index) // `<=` would be wrong since scrambeledword.length() is out of range
{
if (index % 2 == 0)
{
output += scrambeledword[index];
// cout << output; // obsolete. If you just want the characters, print scrambeledword[index]
cout << scrambeledword[index];
}
}
cout << endl; // break the line for better readability
return output;
}
答案 1 :(得分:1)
您的代码不会在for下运行该块,因为该行的末尾有一个;
。这意味着for运行无障碍。基本上,它将取决于给定单词的长度。
在for index <= scrambeledword.length()
中,可能会导致超出范围的异常,因为您可以在字符串数组之外进行索引。请改用index < scrambeledword.length()
。
这可以很好地解决该问题:
string extract(const string& scrambeledword)
{
string output;
for (unsigned int index = 0; index < scrambeledword.length(); index++)
{
if (index % 2 == 0)
{
output += scrambeledword[index];
}
}
return output;
}
答案 2 :(得分:1)
- name: Create users
user:
name: "{{ item.username }}"
comment: "{{ item.comment | default('User {{item.username}}') }}"
password: "{{ item.password | default('!') }}"
state: "{{ item.state | default('present') }}"
shell: "{{ item.shell | default('/bin/bash') }}"
group: "{{ item.group | default('users') }}"
with_items: '{{ users }}'
when: item.username is defined and ((item.admin is defined and item.admin == True) or (item.hosts is defined and item.hosts.user is defined and inventory_hostname in item.hosts.user)
输出:assets = Asset.some_scope.some_other_scope
devices = Device.where("devices.asset_id IN (?)", assets.select(:id))
devices.update_all("devices.my_field=?", 6)
答案 3 :(得分:0)
您可以使用类似这样的内容:
for(int i = 0; i < scrambleword.length(); i+=2){
output += scrambleword.at(i);
}