为什么我的字符串长度打印为零?

时间:2016-03-09 15:55:50

标签: c++ string

#include <iostream>
#include <string>

using namespace std;

int main()
{


    //function for taking in a line
    string line ;
    auto line_size = line.size();

    while (getline(cin, line))
        if (!line.empty())
        {
            cout << line_size << endl;
            cout << line << endl;
        }


    system("pause");
    return 0;
}

为什么当我输入一些内容时line_size打印的内容是否正确?

2 个答案:

答案 0 :(得分:3)

在获得任何输入之前,您正在捕获线条的大小。这意味着line_size将始终为0,因为这是空字符串的大小。您可以将循环更改为

,而不是捕获大小
cout << line.size() << endl; // always gets the size of the current line
cout << line << endl;

答案 1 :(得分:1)

在这里,您可以创建一个空string,其明显大小为0,并将0存储在变量line_size

string line ;
auto line_size = line.size();

这里有一个新行

while (getline(cin, line))

在此处打印line_size的值,即0

cout << line_size << endl;
line_size更新后,

line不会更新。要获得当前行大小打印:

cout << line.size() << endl;