c ++在header和cpp中将字符串作为引用传递

时间:2016-07-12 13:08:13

标签: c++ c++11 visual-c++ pass-by-reference

如何在header和cpp的构造函数中传递字符串作为引用 使用cin获取文本文件中的行。 通过执行此命令提示符:program<的test.txt

的text.txt

aaa
bbb
ccc

的main.cpp

include "read.h"
include <iostream>
include <string>

using namespace std;

int main() {

string output;

Read read(line);

while (getline(cin, line)) {
    Read.run();
    ...
    ...
}

Read.cpp

include "Read.h"
include <iostream>

using namespace std;

Read::Read(string& input) : currentLine(input) {   
}

void Read::run() {
    cout << "currentLine:" << currentLine << "\r\n";        
}

Read.h

class Read{
public:
    std::string currentLine;

    Parser(std::string& s);

    void advance();
}

当我在cmd中执行此程序时: 程序&lt;的test.txt currentLine没有值

1 个答案:

答案 0 :(得分:0)

string output;

Read read(line);

while (getline(cin, line)) {
    Read.run();
    ...
    ...
}

您将read.currentLine设置为input(在构造函数中),但currentLine不是引用,因此只会复制它,从而产生一个空字符串。也可以currentLine作为参考。但要注意悬挂参考文献。