如何在通过'cin'从键盘提取的流中打印'['和','和']'` 我是C++新手。当我用键盘打印一些字符串时,我想在流的开头打印[,在流的结尾打印]。此外,必须在每个字符串之间打印,。请注意,字符串的数量未知。例如,如果我在屏幕上打印:ggg hhh jj klk程序的结果必须是:[ggg,hhh,jj,klk]。我试过这个: string cur = ""; while (cin >> cur) { cout << "[" << cur << ","; }
我总是用一些代码复制来编程这些循环。还有其他解决方案,但一般概念是将第一种情况与其他情况分开如何在通过'cin'从键盘提取的流中打印'['和','和']'` 我是C++新手。当我用键盘打印一些字符串时,我想在流的开头打印[,在流的结尾打印]。此外,必须在每个字符串之间打印,。请注意,字符串的数量未知。例如,如果我在屏幕上打印:ggg hhh jj klk程序的结果必须是:[ggg,hhh,jj,klk]。我试过这个: string cur = ""; while (cin >> cur) { cout << "[" << cur << ","; },c++,C++,我总是用一些代码复制来编程这些循环。还有其他解决方案,但一般概念是将第一种情况与其他情况分开 string cur = ""; cout << '['; if (cin >> cur) { cout << cur; while (cin >> cur) { cout << ',' << cur; } } cout << ']'; 你必须让循环在某个点停止,但你没有。因此,您可以在输入结束时
string cur = "";
cout << '[';
if (cin >> cur) {
cout << cur;
while (cin >> cur) {
cout << ',' << cur;
}
}
cout << ']';
你必须让循环在某个点停止,但你没有。因此,您可以在输入结束时发送一个
EOF
,使其停止(在windows上使用ctrl+z
,在其他操作系统上使用ctrl+D
)。要获得想要的格式,请将循环更改为
int main()
{
string cur = "";
cout << "[ ";
if( cin >> cur) cout << cur;
while (true)
{
cin >> cur;
if( !cin )
{
cout << "]" ;
break;
}
cout << "," << cur;
}
}
如果编译器支持它,则执行此操作
#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
int main()
{
std::cout << "[";
std::copy(std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
std::experimental::make_ostream_joiner(std::cout, ","));
std::cout << "]";
}
#包括[ggg,hhh,jj,klk]
来自ggg-hhh-jj-klk
“但这错了!”错了,怎么了?您是否意识到,您没有在列表末尾打印]
(cout@Algirdas Preidžius,你可以假设我写了cout这是错误的!
,也许你可以告诉每个人什么是对的,因为这肯定不明显。你在图片中所说的是不正确的。@NavdaS-answer产生。如果你不想删除,那么难。删除空格的同一个演示:请参见编辑我的答案。@DavRay“这也错了”-怎么会错?它看起来应该满足你的要求。@DavRay如果答案不符合你的期望,你应该更清楚为什么会这样。这个答案怎么会错?你尝试了什么输入,得到了什么输出,以及你期望得到什么输出?@NadavS这是为了感谢你花时间回答我的问题。你的答案是:答案接近我的期望值。但不同之处在于,当我按下Enter
时,我希望打印结果,但当我按下ctrl+z
时,您的答案将打印结果。这是为了感谢您花时间回答我的问题。您编辑的答案接近我的期望值。但不同之处在于,我希望n我按Enter
会打印结果,但在你的回答中,当我按ctrl+z
时,结果会打印出来。@DavRay我想最后一个片段就是你要找的,不是吗?谢谢,是的,是的。另一个问题:按了之后有可能不完成程序吗输入,但结果已打印,程序将为下一个字符串做好准备?@DavRay程序已完成,因为没有其他命令可执行。如果在std::cout wait!-)之后编写另一个命令,vec
的最后一个元素某个时间未打印!
int main()
{
string cur = "";
cout << "[ ";
if( cin >> cur) cout << cur;
while (true)
{
cin >> cur;
if( !cin )
{
cout << "]" ;
break;
}
cout << "," << cur;
}
}
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> vec;
std::string temp{};
while(std::cin >> temp) vec.push_back(temp);
std::cout << "\n[ " << vec[0];
for(int i {1}; i < vec.size(); i++) std::cout << ", " << vec[i];
std::cout << "]";
}
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> vec;
std::string temp{};
while(std::cin >> temp && !(std::cin.peek() == '\n')) vec.push_back(temp);
std::cout << "\n[" << vec[0];
for(int i {1}; i < vec.size(); i++) std::cout << ", " << vec[i];
std::cout << "]";
}
#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
int main()
{
std::cout << "[";
std::copy(std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
std::experimental::make_ostream_joiner(std::cout, ","));
std::cout << "]";
}