【问题标题】:Why does for loop takes only the last string in this simple code?为什么 for 循环只取这个简单代码中的最后一个字符串?
【发布时间】:2019-10-09 03:55:16
【问题描述】:

我是 C++ 的初学者。 我会开门见山的。我想打印一些字符串的偶数索引字母和奇数索引字母。

示例:字符串“Hello”应该像“Hlo el”一样打印。 但在这段代码中,如果我选择 2 个字符串,则代码只取最后一个。 我希望你能理解我。抱歉英语不好。

int main() {
    string S;
    int T;
    cin>>T;
    for (int a=0;a<T;a++){
        cin>>S;
    }
    for (int a=0;a<=S.length();a+=2){
        cout<<S[a];
    }
    for (int c=1;c<=S.length();c+=2){
        cout<<S[c];
    }
}

注意:我想先输入所有字符串。这就是为什么我没有在第一个循环中包含其他两个循环。

【问题讨论】:

  • 将最后 2 个 for 循环移动到第一个循环内。
  • cin &gt;&gt; S 覆盖 S。这就是为什么它等于您上次输入的原因。

标签: c++


【解决方案1】:

你必须将所有字符串存储在一个容器中,比如vector

#include <iostream>
#include <string>
#include <vector>

int main() {
    int T;
    std::cin >> T;
    std::vector<std::string> Ss(T);
    for (auto &S : Ss){
        std::cin>>S;
    }
    for (const auto &S : Ss) {
        for (std::size_t a=0;a<=S.length();a+=2){
            std::cout<<S[a];
        }
        for (std::size_t c=1;c<=S.length();c+=2){
            std::cout<<S[c];
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多