如何在不强制转换的情况下循环浏览小写字符?

时间:2019-05-17 06:50:04

标签: c++

我想循环显示我的小写字母而不进行转换。我可以遍历每个字符,但是如果我强制转换结果,我只会得到第一个字符。我该如何解决?

main.c

#include "common.h"
#include <iostream>
#pragma comment(lib,"ws2_32")
Common common;

int main()
{
    std::cout << common.ascii_uppercase();

    std::cin.get();
}

common.c

#include "common.h"
#include <iostream>

char Common::ascii_uppercase(){
    for (int c = 97; c <= 122; ++c)
        return (char)c;
}

2 个答案:

答案 0 :(得分:2)

您仅看到第一个字符,因为您在第一次循环迭代中return并没有真正遍历所有字符。这与演员完全无关。

尝试以下方法:

#include "common.h"
#include <iostream>
Common common;

int main() {
    common.ascii_uppercase();
    std::cin.get();
}
#include "common.h"
#include <iostream> 

void Common::ascii_uppercase() {
    for (int c = 97; c <= 122; ++c)
        std::cout << (char)c;

    /* alternatively, without casting:

    for (char c = 'a'; c <= 'z'; ++c)
        std::cout << c;
    */
}

答案 1 :(得分:2)

return时,即使函数处于循环中,函数执行也会结束。因此,您的循环只会运行一次。那不是因为演员。如果要返回多个char,则可以返回std::string,如下所示:

std::string ascii_lowercase() {
    std::string result;
    for (char c = 'a'; c <= 'z'; ++c)
        result += c;
    return result;
}

请注意,return不再处于循环中,而是仅在完成从az的循环之后才返回。这将打印abcdefghijklmnopqrstuvwxyz