Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在通过'cin'从键盘提取的流中打印'['和','和']'` 我是C++新手。当我用键盘打印一些字符串时,我想在流的开头打印[,在流的结尾打印]。此外,必须在每个字符串之间打印,。请注意,字符串的数量未知。例如,如果我在屏幕上打印:ggg hhh jj klk程序的结果必须是:[ggg,hhh,jj,klk]。我试过这个: string cur = ""; while (cin >> cur) { cout << "[" << cur << ","; }_C++ - Fatal编程技术网

如何在通过'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 << "]";
}