Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
C++ 如何避免打印cout语句的终端空间_C++_String_Cout - Fatal编程技术网

C++ 如何避免打印cout语句的终端空间

C++ 如何避免打印cout语句的终端空间,c++,string,cout,C++,String,Cout,我正在处理一个函数,它以相反的顺序打印命令行参数。代码有点不雅观,我知道,但我只需要一些有用的东西: #include <iostream> using namespace std; int main(int argc, char *argv[]) { if (argc==1){ cout <<"\n"; } for (int str=argc; str-1; str--){ cout <<argv[str

我正在处理一个函数,它以相反的顺序打印命令行参数。代码有点不雅观,我知道,但我只需要一些有用的东西:

#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {

    if (argc==1){
      cout <<"\n";
    }

    for (int str=argc; str-1; str--){
      cout <<argv[str-1]<<" ";

    }
      if(argc>1){
        cout<<"\n";
      }
    return 0;
}
#包括
使用名称空间std;
int main(int argc,char*argv[]){
如果(argc==1){
库特
我是否需要在for循环之后插入另一个if语句

是的。这将是最简单、最清晰的方法。可能类似于:

for (int str=argc; str>1; str--){
    cout << argv[str-1];
    if (str != 2)
        cout << " ";
}
for(int-str=argc;str>1;str--){
库特
我是否需要在for循环之后插入另一个if语句

是的。这将是最简单、最清晰的方法。可能类似于:

for (int str=argc; str>1; str--){
    cout << argv[str-1];
    if (str != 2)
        cout << " ";
}
for(int-str=argc;str>1;str--){

不能不,您不一定需要if语句:

cout << argv[argc - 1];
for (int str = argc - 1; str > 1; str--)
{
    cout << " " << argv[str - 1];
}
cout 1;str--)
{

cout 2)cout不,您不一定需要if语句:

cout << argv[argc - 1];
for (int str = argc - 1; str > 1; str--)
{
    cout << " " << argv[str - 1];
}
cout 1;str--)
{

cout 2)cout再来一个if有什么不对

...
for (int str=argc; str-1; str--){
    cout << argv[str-1];
    if (str>2) cout << " ";
 }
...
。。。
对于(int str=argc;str-1;str--){

cout 2)cout再来一个if有什么不对

...
for (int str=argc; str-1; str--){
    cout << argv[str-1];
    if (str>2) cout << " ";
 }
...
。。。
对于(int str=argc;str-1;str--){

cout 2)cout您可以跳过
if语句(除非您打算在其中执行非常具体的操作)

当您不提供任何命令行参数时,
for
循环(以及三元运算符)本身将处理这种情况。如果没有命令行参数,则for循环
str>1
中的第二个参数将为false(因为argc将为1)。因此,您还可以使用:

int str;
for (str=argc; str > 1; str--)
    (str > 2)?cout<< argv[str-1]<<" " :cout<<argv[str-1]<<"\n";
int-str;
对于(str=argc;str>1;str--)

(str>2)?您是否可以跳过
if语句(除非您打算在其中执行非常具体的操作)

当您不提供任何命令行参数时,
for
循环(以及三元运算符)本身将处理这种情况。如果没有命令行参数,则for循环
str>1
中的第二个参数将为false(因为argc将为1)。因此,您还可以使用:

int str;
for (str=argc; str > 1; str--)
    (str > 2)?cout<< argv[str-1]<<" " :cout<<argv[str-1]<<"\n";
int-str;
对于(str=argc;str>1;str--)

(str>2)?cout我想我应该写一些不同的代码。我想我应该使用更接近这个的东西:

#include <iostream>
#include <vector>
#include "infix_iterator.h"

int main(int argc, char **argv) {
    std::vector<char *> args {argv+1, argv+argc};

    if (args.empty())
        return 1;

    std::cout << "\n";           
    std::copy(args.rbegin(), args.rend(),
              infix_ostream_iterator<char *>(std::cout, " "));
    std::cout << "\n";      
}
#包括
#包括
#包括“中缀迭代器.h”
int main(int argc,字符**argv){
向量args{argv+1,argv+argc};
if(args.empty())
返回1;

std::cout我想我应该写一些不同的代码。我想我应该使用更接近这个的东西:

#include <iostream>
#include <vector>
#include "infix_iterator.h"

int main(int argc, char **argv) {
    std::vector<char *> args {argv+1, argv+argc};

    if (args.empty())
        return 1;

    std::cout << "\n";           
    std::copy(args.rbegin(), args.rend(),
              infix_ostream_iterator<char *>(std::cout, " "));
    std::cout << "\n";      
}
#包括
#包括
#包括“中缀迭代器.h”
int main(int argc,字符**argv){
向量args{argv+1,argv+argc};
if(args.empty())
返回1;

std::非常感谢您的回答!如果可以的话,您能帮我弄清楚我需要什么样的If语句吗?我真的很困惑--我应该做一个关于str或argv的If语句吗?非常感谢!我尝试了这个代码,它工作得非常好。我非常感谢您的解释,我一定会记下以后的编码。Than谢谢你的回答!如果可以的话,你能帮我弄清楚我需要什么样的If语句吗?我真的很困惑--我应该做一个关于str或argv的If语句吗?非常感谢!我尝试了这个代码,它工作得很好。我真的很感谢你的解释,我一定会记下以后的编码。谢谢你的帮助回答!我试过了,成功了!但是,现在当我没有输入任何命令行参数时,出现了一个“分段错误(内核转储)”错误。我将编辑主要帖子来显示!大多数痛苦是由于Hooliaqoulia在
[argc,2]
上循环,而不是从
[argc-1,1]循环
,这可能对每个人都更清楚。谢谢你的回答!我尝试了这个,它很成功!但是,现在当我没有输入任何命令行参数时,出现了一个“分段错误(内核转储)”错误。我将编辑主要帖子来显示!大多数痛苦是由于hooliaqoulia在
[argc,2]上循环造成的
而不是从
[argc-1,1]循环,这可能对大家都很清楚。谢谢你的回答!我对C++完全陌生,只是两周前开始的,所以大部分对我来说都是陌生的。但是谢谢你给我看,我一定会在我更先进的时候回到这个。谢谢你的回答!我对C++完全陌生,只是两个星期前才开始的,所以这对我来说大部分都是陌生的——但是谢谢你给我展示,我会在我更高级的时候回到这里。