通过字符串C ++迭代

时间:2017-10-05 19:03:30

标签: c++

我有一个c ++程序,我需要遍历字符串并打印字符。我得到正确的输出,但随着输出我得到一些垃圾值(垃圾值为0)。我不知道为什么我会得到这些价值观?任何人都可以帮我吗?

#include <iostream>

using namespace std;

int number_needed(string a) {
   for(int i=0;i<a.size();i++)
   {
       cout<<a[i];
   }
}

int main(){
    string a;
    cin >> a;
    cout << number_needed(a) << endl;
    return 0;
}

示例输入

hi

输出

hi0

2 个答案:

答案 0 :(得分:5)

您的程序的行为是 undefined number_needed是非void函数,因此它需要在所有程序控制路径上显式return值。

很难知道coutmain要打印的内容。根据您的问题文本判断,您也可以将number_needed的返回类型更改为void,并将main调整为

int main(){
    string a;
    cin >> a;
    number_needed(a);
    cout << endl; // print a newline and flush the buffer.
    return 0;
}

答案 1 :(得分:2)

问题在于这一行:

cout << number_needed(a) << endl;

将其更改为:

number_needed(a);

问题是number_needed()正在输出字符串的每个字母,但在此之后,您输出number_needed()返回的值,即0。