关于 C++ 中 stringstream 中的数组

About array in stringstream in C++

我想设计一个程序,输入一个带space的字符串,输出拆分后的字符串和字母个数,但不知道while(! ss.eof()){}”。比如我输入“Programming is fun”,结果是

Programming
is
fun
Length:18

当我将“word[i]”更改为word[0]时,结果是

fun


Lenght:18

单词[1]是


fun

Lenght:18

谁能解释一下?

这是我的代码:

#include<iostream>
#include<sstream>
using namespace std;

void printStringArray(string word[], int size)
{
    for (int i = 0;i < size;i++)
    {
        cout << word[i] << endl;
    }
}

int main()
{
    string word[10];
    string str;
    getline(cin, str);
    stringstream ss(str);
    int i = 0;
    while (!ss.eof())
    {
        ss >> word[i];//P
        i++;
    }
    printStringArray(word, 3);
    cout << "Lenght:" << str.size();

    return 0;
}

这个循环:

while (!ss.eof())
{
    ss >> word[0];
    i++;
}

将数组中的第一项设置为 3 个不同的值,在每次迭代中该值都会被一个新值替换,因此您将在数组的第一个位置留下最后一个单词,其他条目是取消设置(空)。

当您将 word[0] 更改为 word[1] 时,同样的事情会发生,除了数组的第二个位置。