关于 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]
时,同样的事情会发生,除了数组的第二个位置。
我想设计一个程序,输入一个带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]
时,同样的事情会发生,除了数组的第二个位置。