c ++将一个std :: string转换为另一个

时间:2014-07-11 21:54:09

标签: c++ string pointers

正如你可能从我的问题中得知的那样,我是一个c ++新手

我不确定将一个字符串的值复制到另一个字符串的正确方法是什么。

例如,我这样做了:

std::string x = "this is x";
std::string y = "this is y";
x = y;

没有错误,但这没有做任何事情..

我知道有字符串:: copy ...但似乎这个函数需要缓冲区大小等等。这很烦人..

有一种简单的方法可以在c ++中完成这项工作吗?

由于

UPDATE !!

抱歉,我觉得我的答案太简单了...... 这是我的情况:

class MyClass {
    std::string m_str = "OLD STRING";
}

void CopyString(MyClass& c, std::string x) {
    c.m_str = x;
}

int main() {
    MyClass c;
    CopyString(c, "NEW STRING");

    std::cout << c.m_str << std::endl;           // prints "OLD STRING"!!
}

3 个答案:

答案 0 :(得分:5)

您的代码

std::string x = "this is x";
std::string y = "this is y";
x = y;

是正确的,并将y变量的值复制到x变量。

你的断言

  

这没有做任何事情。

- 幸福 - 不正确。

答案 1 :(得分:0)

当您执行x = y时,它会将y的值复制到x,因此,xthis is y

答案 2 :(得分:0)

虽然它不是最好的实现(get / set方法会更好),但你需要将m_str设为public。使用类时,如果不设置它,则默认情况下所有变量都设置为private。将其更改为此,它应该编译并运行。

class MyClass {
public:
    std::string m_str = "OLD STRING";
};
编辑:您在课程结束时也忘记了分号并复制了方法。