c++ - 如何在通过`cin`从键盘提取的流中打印`[`和`,`和`]`
问题描述
我是 C++ 新手。当我通过键盘打印一些字符串时,我想在流[
的开头和结尾打印。]
它也必须,
在每个字符串之间打印。注意字符串的数量是未知的。例如,如果我在屏幕上打印:ggg hhh jj klk
程序的结果必须是:[ggg,hhh,jj,klk]
。我试过这个:
string cur = "";
while (cin >> cur)
{
cout << "[" << cur << ",";
}
但这错了!
但我的期望是:
sss ddd fff ggg
[sss,ddd,fff,ggg]
ddf hjh lk iop
[ddf,hjh,lk,iop]
解决方案
我总是用一些重复的代码对这些循环进行编程。还有其他解决方案,但一般概念是将第一种情况与其他情况分开。
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 << ']';
推荐阅读
- php - 如果连接未关闭并重新打开,则发送 QUERY 数据包时 MySQl 错误
- unicode - 如何在 VB6 中使用 mscom 发送乌尔都语文本消息
- javascript - 处理在 Ajax 中更改的多个数据/参数 - Wordpress
- html - 如何在固定大小的网格列之间设置灵活的网格列间隙?
- python - 使用 Pynput.mouse 时无法跳出 While 循环
- python - python socket脚本获取数据
- python - Django rest 框架 - 在 post() 中解析键值对
- angularjs - AngularJS - 使用函数作为控制器内的过滤器
- r - 检查点在 R-markdown 中找不到 multidplyr
- r - 使用 tidyverse 对大型时间序列数据集有条件地聚合列