我想循环显示我的小写字母而不进行转换。我可以遍历每个字符,但是如果我强制转换结果,我只会得到第一个字符。我该如何解决?
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;
}
答案 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
不再处于循环中,而是仅在完成从a
到z
的循环之后才返回。这将打印abcdefghijklmnopqrstuvwxyz
。