首页 > 解决方案 > 如何在通过`cin`从键盘提取的流中打印`[`和`,`和`]`

问题描述

我是 C++ 新手。当我通过键盘打印一些字符串时,我想在流[的开头和结尾打印。]它也必须,在每个字符串之间打印。注意字符串的数量是未知的。例如,如果我在屏幕上打印:ggg hhh jj klk程序的结果必须是:[ggg,hhh,jj,klk]。我试过这个:

string cur = "";

while (cin >> cur)
{
    cout << "[" << cur << ",";
}

但这错了!

编辑:@NadavS 的回答我们有这个: 在此处输入图像描述

通过@asmmo 的回答,我们有这个: 在此处输入图像描述

但我的期望是:

sss ddd fff ggg
[sss,ddd,fff,ggg]

ddf hjh lk iop
[ddf,hjh,lk,iop]

标签: c++

解决方案


我总是用一些重复的代码对这些循环进行编程。还有其他解决方案,但一般概念是将第一种情况与其他情况分开。

string cur = "";
cout << '[';
if (cin >> cur) {
  cout << cur;

  while (cin >> cur) {
    cout << ',' << cur;
  }
}
cout << ']';

演示

编辑:尽管这个解决方案有效,但提问者在“同一个窗口”中查看他的“stdin”和“stdout”,所以输出看起来并不漂亮,解决方案应该是存储来自cin和的字符串列表然后才开始打印。

string cur = "";
std::vector<string> all_strings;
while (cin >> cur) {
  all_strings.push_back(cur);
}
cout << '[';
bool first = true;
for (auto& a : all_strings) {
  if (first) {
    first = false;
  } else {
    cout << ", ";
  }
  cout << a;
}
cout << ']';

推荐阅读