C++ 如何将文本输入到字符串数组中?

C++ 如何将文本输入到字符串数组中?,c++,string,input,C++,String,Input,串果[200] 如何将字符串输入到数组中 Example: My mom has apples; So , fruits array will contain: fruits[0] = "My"; fruits[1] = "mom"; ..........etc. 我该怎么做?如果您正在阅读标准输入: int i = 0; for (string word; cin >> word; i++) names[i] = word; 如果您是从字符串读取,请改用istrings

串果[200]

如何将字符串输入到数组中

Example:
My mom has apples;
So , fruits array will contain:
fruits[0] = "My";
fruits[1] = "mom";
..........etc.

我该怎么做?

如果您正在阅读标准输入:

int i = 0;
for (string word; cin >> word; i++)
    names[i] = word;

如果您是从
字符串读取
,请改用
istringstream

如果您是从标准输入读取:

int i = 0;
for (string word; cin >> word; i++)
    names[i] = word;

如果你从代码<字符串> />代码中读取,使用<代码> RistIsFuns。

< P>如果你想使用标准的C++库来充分利用输入迭代器和<代码>向量< /代码>而不是数组:

vector<string> words;
back_insert_iterator< vector<string> > back_iter (words);
istream_iterator<string> eos;
istream_iterator<string> iit (cin);
copy (iit, eos, back_iter);
向量词;
后退插入迭代器后退迭代器(单词);
istream_迭代器eos;
istream_迭代器iit(cin);
副本(iit、eos、背面);

使用<代码>向量< /代码>修复了必须猜测多少单词的输入,并伴随错误猜测的结果。

< P>如果您想使用标准的C++库,则使用输入迭代器和<代码>向量< /代码>代替数组:

vector<string> words;
back_insert_iterator< vector<string> > back_iter (words);
istream_iterator<string> eos;
istream_iterator<string> iit (cin);
copy (iit, eos, back_iter);
向量词;
后退插入迭代器后退迭代器(单词);
istream_迭代器eos;
istream_迭代器iit(cin);
副本(iit、eos、背面);

使用
vector
解决了必须猜测将输入多少单词的问题,并承受错误猜测的后果。

最简洁的解决方案:

vector<string> words; 
copy(istream_iterator<string>(cin), 
     istream_iterator<string>(), 
     back_inserter(words));
向量词;
复制(istream_迭代器(cin),
istream_迭代器(),
背面插入器(文字);

这是@dasblinkenlight的解决方案,使用临时变量编写。

最紧凑的解决方案:

vector<string> words; 
copy(istream_iterator<string>(cin), 
     istream_iterator<string>(), 
     back_inserter(words));
向量词;
复制(istream_迭代器(cin),
istream_迭代器(),
背面插入器(文字);

这是@dasblinkenlight的解决方案,使用临时变量编写。

输入来自哪里?用户输入或来自预定义字符串?用户输入,例如:cin>>编号;我尝试过getline函数,但它不起作用。说“它不起作用”是没有帮助的。你必须向我们展示你到底做了什么,告诉我们你期望发生什么,发生了什么。你的意见来自哪里?用户输入或来自预定义字符串?用户输入,例如:cin>>编号;我尝试过getline函数,但它不起作用。说“它不起作用”是没有帮助的。你必须准确地告诉我们你尝试了什么,告诉我们你期望发生什么,以及发生了什么。好吧,但这将是无限循环,我如何停止此操作并继续执行其他说明?@Johnnie
cin>>word
将在没有更多单词可读时返回
false
。尝试:-)我尝试了if(word==null)break;else name[i]=单词;但是我在word==0中找不到运算符==的匹配项;怎么了?Fwiw,除非您在插入之前有特定的理由检查中间
单词
,否则可以进一步简化为
int i=0;而(cin>>名称[i])++i
@XiaoJia我相信
,而(cin>>名称[I++])
可能不正确,因为我相信即使失败,也会应用post增量,在这种情况下,您的结果计数将始终减少1。有人来检查一下。好吧,但这将是无限循环,我如何停止它并继续执行其他指令?@Johnnie
cin>>word
将在没有更多单词可读时返回
false
。尝试:-)我尝试了if(word==null)break;else name[i]=单词;但是我在word==0中找不到运算符==的匹配项;怎么了?Fwiw,除非您在插入之前有特定的理由检查中间
单词
,否则可以进一步简化为
int i=0;而(cin>>名称[i])++i
@XiaoJia我相信
,而(cin>>名称[I++])
可能不正确,因为我相信即使失败,也会应用post增量,在这种情况下,您的结果计数将始终减少1。谁来查一查。