小编use*_*494的帖子

用自己初始化一个字符串(C++)

下面的代码在Linux(g ++ 4.8.4)和Windows(VS Express 2013)上编译,但在执行时会产生不同的结果.

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
    string str = str;
    cout << "'str.length()': "
         << str.length() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Linux上我得到:

'str.length()': 140187593065792
Run Code Online (Sandbox Code Playgroud)

在Windows上,我得到:

'str.length()': 0
Run Code Online (Sandbox Code Playgroud)

另外,如果我更改了如下所示的初始化语句,那么它符合但它在运行时崩溃(在Linux上我得到:在抛出'std :: bad_alloc'的实例后调用terminate):

string str = str + str;
Run Code Online (Sandbox Code Playgroud)

我理解,在这两种情况下,这不是初始化字符串变量的常用方法.但是,有人可以解释这段代码的真正错误吗?另外,为什么第一种情况下输出不同?

c++ string

0
推荐指数
1
解决办法
99
查看次数

标签 统计

c++ ×1

string ×1