C++字母字符串转ASCII值替换后无输出问题排查求助
问题分析与解决办法
嘿,我一眼就揪出你代码里的两个关键问题,这就是程序没输出的根源~
1. 循环条件完全写反了!
你写的循环条件是z > input.size(),但z是从0开始的啊!比如输入"abc"时,input.size()是3,0怎么可能大于3?这直接导致循环体根本不会执行,自然啥输出都没有。正确的条件应该是z < input.size(),这样才能遍历字符串里的每一个字符。
2. 字符转ASCII的方式搞错了
你试图把input[z]转成int再赋值回原字符串,这其实是个误区:字符类型本身存储的就是ASCII码值,你把(int)input[z]赋值给input[z],相当于把整数(比如97)又转成对应的字符('a'),原字符串根本没变,就算循环执行了,输出的还是原来的"abc",不是你要的数字串。
修正后的代码
直接输出每个字符的ASCII值就好,不用修改原字符串:
#include <iostream> #include <string> using namespace std; int main() { string input; cin >> input; // 循环条件改成z < input.size(),遍历每个字符 for (int z = 0; z < input.size(); z++) { // 直接输出转成int的字符值 cout << (int)input[z]; } // 最后加个换行符更规范 cout << endl; return 0; }
如果想要先把结果存成字符串再输出,也可以用字符串流来处理:
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string input; cin >> input; stringstream result_ss; // 用范围for循环更简洁 for (char c : input) { result_ss << (int)c; } cout << result_ss.str() << endl; return 0; }
这样输入"abc",就能得到你想要的979899输出啦~
内容的提问来源于stack exchange,提问作者2 False
相关产品推荐
相关产品推荐

