字符串大小总是32个字节

Jak*_*k13 1 c++ string io

码:

#include <iostream>
#include <string>

int main(void)
{

    std::cout << "Please enter your name: ";
    std::string name;
    std::cin >> name;

    std::cout << std::endl;

    std::cout << "Your name is " << name << "." << std::endl;

    std::cout << "The size of '" << name << "' in bytes is " << sizeof(name)
    << "." << std::endl;

    std::cin.get();
    std::cin.get();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

每当我运行这个程序,并为变量'name'输入一个字符串时,它总是会输出变量的大小是32个字节.对于四个或五个字符的名称来说,这似乎相当大.是否与O/I流有关?或者它是否与字符串类中的某些内容有关?我是C++的新手,所以感谢任何帮助.谢谢.

该计划的输出:

请输入你的名字:杰克

你的名字是杰克.'Jake'的大小以字节为单位.

Jac*_*ack 6

sizeof是一个编译时运算符,它返回一个对象表示的字节大小,这是它在内存中的布局大小.它与std::string内容无关.

string.size()改用.

  • @pstrjds,在这种情况下,`sizeof(decltype(name):: value_type)`. (2认同)