在C ++中返回一个std字符串

时间:2019-03-21 01:24:29

标签: c++

我正在尝试在函数中返回string rock。我通过在主函数中使用cout<<computertest.returncomputer()<<endl;来调用函数。但是我有一个空字符串。但是,如果我将rock更改为“ abc”,它将返回abc。我的代码在做什么错?顺便说一下,当size = 7时,test1和test2给我R R R R。

//computer.cpp
#include "computer.h"
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
Computer::Computer(string Rock, int Size){
    rock = Rock;
    size = Size;
}
void Computer::Computerplayer(){

    int i = 0;
    int l = 1;

    for(i=0;i<size;i+=2){

        rock += 'R';
        rock += ' ';

    }
    /*cout<<"test1 "<<rock<<endl;*/

}

string Computer::returncomputer(){
  /* cout<<"test2 "<<rock<<endl; */
    return rock;
}

标题

//computer.h
#ifndef COMPUTER_H
#define COMPUTER_H
#include <iostream>
#include <string>
using namespace std;


class Computer{
    public:
    Computer(string Rock, int Size);
    void Computerplayer();
    string returncomputer();
    private:
    string rock;
    int size;




};
#endif

主要

//main.cpp
#include "computer.h"
#include "human.h"
#include "referee.h"
#include <iostream>
#include <string>
#include <sstream>


using namespace std;

int main(){

    int size;
    string type = "3 S R P";
    string rock;
    getline(cin, type);
    size = type.length();

    cout<< size<<endl;
    Human humantest(size, type);
    Computer computertest(rock, size);
    /*Referee refereetest(size, type, computertest.returncomputer());
    humantest.Humanplayer();
    refereetest.Result();*/
    /*computertest.Computerplayer();*/
    cout<<computertest.returncomputer()<<endl;


}

1 个答案:

答案 0 :(得分:2)

您似乎没有在修改rock,因此它仍然是一个空字符串。

这会使用空的Computer字符串构造rock对象:

Computer computertest(rock, size);

这可能会修改rock,但这不是因为它被注释掉了:

/*computertest.Computerplayer();*/