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++完全陌生,只是两个星期前才开始的,所以这对我来说大部分都是陌生的——但是谢谢你给我展示,我会在我更高级的时候回到这里。